Seite 1 von 1
[gelöst] Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: Sa 12. Mär 2022, 18:36
von malt14
Guten Tag,
in einer Firebird Abfrage will ich mit Datum und Zeitstempel rechnen.
Code: Alles auswählen
SELECT "ID", "1timestamp", "2timestamp", "date", "days", "hours", CURRENT_TIMESTAMP, "1timestamp" - "2timestamp" "1timestamp-2timestamp", "date" - "days" "date-days", "date" - "hours" / 24.0000 "date-hours", "1timestamp" - "days" "1timestamp-days", "1timestamp" - "hours" / 24.0000 "1timestamp-hours", "1timestamp" - CAST( "date" AS TIMESTAMP ) "1timestamp-date" FROM "time_date"
Wie kann ich in der Abfrage CURRENT_TIMESTAMP zum Rechnen verwenden?
"1timestamp"- CURRENT_TIMESTAMP, "date" - CURRENT_TIMESTAMP führen zu Fehlermeldungen.
Das Ergebnis sollte in einem Formular sowohl als Zeitstempel wie als Dezimalzahl dargestellt werden können.
Grüße
Malt
Version: 7.2.5.2 (x64) / LibreOffice Community
Build ID: 499f9727c189e6ef3471021d6132d4c694f357e5
CPU threads: 6; OS: Windows 10.0 Build 22000; UI render: Skia/Raster; VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: CL
Re: Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: Sa 12. Mär 2022, 18:48
von RobertG
Hallo Malt,
was für Fehlermeldungen erhältst Du denn? Bei der Subtraktion von Zeitstempeln müsste das eine Zahl mit Nachkommastellen ergeben. Das gibt dann die Differenz in Tagen (und eben Bruchteilen von Tagen) an. Habe ich nur zu dem Zeitpunkt getestet, als ich das für das Handbuch untersucht habe.
Es kann sein, dass das nicht in der GUI nur bei direktem SQL funktioniert. Dann musst Du den Timestamp bzw. das Datum umwandeln:
CURRENT_DATE – "Datum" → funktioniert nicht in der GUI, sondern nur mit direktem SQL
CAST( CURRENT_DATE AS DATE ) – "Datum" → funktioniert in der GUI
"1timestamp"- CURRENT_TIMESTAMP → müsste also in direktem SQL funktionieren
"1timestamp"- CAST(CURRENT_TIMESTAMP AS TIMESTAMP) → müsste in der GUI funktionieren.
Ein Datum kannst Du aber nicht von einem Zeitstempel abziehen. Das sind ja unterschiedliche Datentypen. Da musst Du das Datum schon in einen Zeitstempel umwandeln. Vermutlich brauchst Du dann die Zeit 0 Uhr.
Die Sachen zum Rechnen mit Datum und Zeit stehen alle im Anhang des Handbuches.
Gruß
Robert
Re: Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: So 13. Mär 2022, 14:01
von malt14
Hallo Robert,
Dank für Deine hilfreiche Antwort.
Es ist wie Du schreibst:
"1timestamp"- CURRENT_TIMESTAMP funktioniert in direktem SQL
"1timestamp"- CAST(CURRENT_TIMESTAMP AS TIMESTAMP) funktioniert in GUI. Muss ich im Handbuch übersehen haben.
In Formularen formatiert man Zahlen z.B. als Uhrzeit mit [H]:MM:SS. Gibt es eine Möglichkeit Tausendertrennzeichen einzufügen, 1583:27:48 wird zu 1.583:27:48?
Kann man hier im Forum odb Dateien hochladen? Mir wird bei "Dateien hinzufügen" *.odb nicht angezeigt, jedoch *.odt.
Grüße
Malt
Re: Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: So 13. Mär 2022, 15:12
von RobertG
Hallo Malt,
das mit den Tausendertrennzeichen habe ich noch nie probiert. Vielleicht lädst Du einfach die Datei hoch. Packe sie als *.zip-Datei oder ändere einfach die Dateiendung und schreibe das dabei. Das mit den *.odb-Dateien ist eben ein Einstellungsmangel des Forums hier, das ja mit LibreOffice selbst eigentlich nichts zu tun hat. Würde das bei
https://ask.libreoffice.org vorkommen, dann wäre das als Bug zu melden.
Gruß
Robert
Re: Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: So 13. Mär 2022, 19:06
von malt14
Hallo Robert,
da jetzt alles funktioniert, ergänze ich das Thema in gelöst.
Ich füge die time-date-FB.odb Datei in time-date-FB.zip bei.
Im Formular Abfrage1 enthält die Spalte 1timestamp-CURRENT_TIMESTAMP das Format [H]:MM:SS. Ein Tausendertrennzeichen wäre übersichtlicher.
Grüße
Malt
Re: [gelöst] Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: So 13. Mär 2022, 20:57
von RobertG
Hallo Malt,
die Tausendertrennzeichen bekomme ich so auch nicht hin. Wie wäre es denn, wenn Du das Ganze bereits in der Abfrage in eine Kombination aus ganzen Tagen und Stunden umwandelst? Dann käme bei den Stunden maximal 23:59:59 raus und davor würden Tage stehen.
Gruß
Robert
Re: [gelöst] Firebird Abfrage CURRENT_TIMESTAMP rechnen
Verfasst: Mo 14. Mär 2022, 11:42
von malt14
Hallo Robert,
Gute Idee.
Die Formate für Formulare scheint man nicht verändern oder ergänzen zu können. Das müsste wohl in LO programmiert werden. Für Firebird wäre eine höhere Priorität, Bugs zu korrigieren. Ich kann z.B. keine Daten von ods Dateien ohne Primärschlüssel einfügen, weil dann der Auto-Wert nicht funktioniert.
Grüße
Malt