von RobertG » Sa, 15.09.2018 18:03
Hallo DTH,
da die interne HSQLDB (Standarddatenbank unter OpenOffice und auch zur zeit noch unter LibreOffice) keine Funktion DATEADD mit dabei hast, musst Du Dir mit anderen Möglichkeiten behelfen.
Bei einem Wartungsintervall von 12 Monaten wäre das noch recht einfach zu gestalten, sofern Du bei Schaltjahren mit kleinen Fehlern leben kannst: Datum in Jahr, Monat und Tag aufteilen, zu dem Jahreswert ein Jahr hinzufügen und anschließend Datum wieder zusammenfügen und vor allem nicht vergessen, den so entstandenen 'Text' wieder in eine Datumsvariable umzuwandeln:
Code: Alles auswählen
SELECT "Datum",
CAST(YEAR("Datum")+1||'-'||RIGHT('0'||MONTH("Datum"),2)||'-'||RIGHT('0',DAY("Datum") AS DATE)
AS "Datum_Folgejahr"
Schon das ist natürlich für den Anfang eine Zumutung. Du musst erst einmal in den SQL-Modus umschalten und dann auch noch mit dem Code hantieren können. Da Tageswerte und Monatswerte auch einstellig sein können muss eine '0' mit den Werten verbunden werden und dann das Ergebnis dieser Verbindung auf 2 Stellen begrenzt werden.
Für genauere Einstellungen (Datum in 2 Wochen) habe ich mir bei meinen ersten Datenbanken so geholfen, dass ich in Calc eine Liste erstellt habe: Ein Feld mit laufender Nummer, ein zweites Feld mit einem Datum. Einfach runter gezogen macht Calc daraus eine Liste mit fortlaufenden Nummern und fortlaufenden Datumswerten. Die Liste habe ich gleich für mehrere Jahre erstellt (war für eine Bibliothek - 3 Jahre haben mir da erst einmal gereicht). Wenn ich dann das Datum anzeigen wollte, bei dem ein Buch, das gerade entliehen wurde, zurückgegeben werden sollte, habe ich dann über eine Abfrage in der Liste "lfdNr_Datum" nachgeschaut, welchen Wert das Ausleihdatum als "LfdNr" hat, zu der "LfdNr" dann 14 addiert (14 Tage und bei der entsprechenden Nummer das Rückgabedatum herausgelesen.
Details dazu stehen im Handbuch Base, siehe auch hier meine Signatur. Im Handbuch für LO 6.1 steht das auf S. 408f.
Gruß
Robert
Hallo DTH,
da die interne HSQLDB (Standarddatenbank unter OpenOffice und auch zur zeit noch unter LibreOffice) keine Funktion DATEADD mit dabei hast, musst Du Dir mit anderen Möglichkeiten behelfen.
Bei einem Wartungsintervall von 12 Monaten wäre das noch recht einfach zu gestalten, sofern Du bei Schaltjahren mit kleinen Fehlern leben kannst: Datum in Jahr, Monat und Tag aufteilen, zu dem Jahreswert ein Jahr hinzufügen und anschließend Datum wieder zusammenfügen und vor allem nicht vergessen, den so entstandenen 'Text' wieder in eine Datumsvariable umzuwandeln:
[code]SELECT "Datum",
CAST(YEAR("Datum")+1||'-'||RIGHT('0'||MONTH("Datum"),2)||'-'||RIGHT('0',DAY("Datum") AS DATE)
AS "Datum_Folgejahr"[/code]
Schon das ist natürlich für den Anfang eine Zumutung. Du musst erst einmal in den SQL-Modus umschalten und dann auch noch mit dem Code hantieren können. Da Tageswerte und Monatswerte auch einstellig sein können muss eine '0' mit den Werten verbunden werden und dann das Ergebnis dieser Verbindung auf 2 Stellen begrenzt werden.
Für genauere Einstellungen (Datum in 2 Wochen) habe ich mir bei meinen ersten Datenbanken so geholfen, dass ich in Calc eine Liste erstellt habe: Ein Feld mit laufender Nummer, ein zweites Feld mit einem Datum. Einfach runter gezogen macht Calc daraus eine Liste mit fortlaufenden Nummern und fortlaufenden Datumswerten. Die Liste habe ich gleich für mehrere Jahre erstellt (war für eine Bibliothek - 3 Jahre haben mir da erst einmal gereicht). Wenn ich dann das Datum anzeigen wollte, bei dem ein Buch, das gerade entliehen wurde, zurückgegeben werden sollte, habe ich dann über eine Abfrage in der Liste "lfdNr_Datum" nachgeschaut, welchen Wert das Ausleihdatum als "LfdNr" hat, zu der "LfdNr" dann 14 addiert (14 Tage und bei der entsprechenden Nummer das Rückgabedatum herausgelesen.
Details dazu stehen im Handbuch Base, siehe auch hier meine Signatur. Im Handbuch für LO 6.1 steht das auf S. 408f.
Gruß
Robert