Datumsberechnung mit Interbase (Firebird)
-
Hallo,
ich habe eine Frage zur Datumsberechnung in einer IB-Datenbank.
Ich habe zwei Daten, dessen Differenz ich errechnen möchte.
Datum 1: 30.03.2016 13:55:01
Datum 2: 31.03.2016 07:15:00Ich habe dazu datediff() gefunden. Leider bekomme ich immer eine Fehlermeldung, mit der ich nichts anfangen kann? Ich versuche folgendes:
datediff (MINUTE, timestamp '30.03.2016 13:55:01', timestamp '31.03.2016 07:15:00')
Dabei bekomme ich diesen Fehler:
Can't format message 13:896 -- message file c:\Program Files\Borland\InterBase/interbase.msg not found.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, char 1.
Datediff.Auch mit einem select davor bekomme ich einen Fehler:
Dynamic SQL Error.
SQL error code = -104.
As approximate floating-point values in SQL dialect 1, but as 64-bit.Danke
Torsten
-
Vermutlich weil die verwendete Query-Komponente das nicht kann.
Was verwendest Du denn für den Zugriff. Ich musste damals auf die IB_OBJECTS zurückgreifen, weil die Standardkomponenten im BCB 6 keine DSQL- oder PSQL-Statements ausführen können.
-
Es scheitert schon daran den SQL-String im "SQL Manager Lite for InterBase and Firebird" abzusetzen.
Denn diesen möchte ich als Prozedur in der DB ablegen und aus meiner Anwendung heraus aufrufen.So der Plan...
-
Ich vermute dass
'30.03.2016 13:55:01'
kein gültiges "timestamp" Format ist.
Versuchs mal mit'2016-03-30 13:55:01'
bzw.'2016-03-30 13:55:01.000'
.
Und versuch's mal ohne dem "timestamp" davor, also einfachSELECT datediff(MINUTE, '2016-03-30 13:55:01', '2016-03-31 07:15:00');
Wenn das nicht geht evtl. mit nem CASTSELECT datediff(MINUTE, CAST('2016-03-30 13:55:01' AS TIMESTAMP), CAST('2016-03-31 07:15:00' AS TIMESTAMP));
Einfach bisschen rumprobieren.
-
Hallo,
ich kann eingeben wass ich will, ich bekomme einfach kein Ergebnis.
Es erscheint immer folgender Fehler:Can't format message 13:896 -- message file c:\Program Files\Borland\InterBase/interbase.msg not found.
Dynamic SQL Error.
SQL error code = -104.
As approximate floating-point values in SQL dialect 1, but as 64-bit.Gruß
Torsten
-
Kann es sein, daß da noch ein älterer FB Client benutzt wird, s.a. Wrong error message on FB2.1 64 Linux?
-
Bei mir funzt das so (Firebird 2.5)
SELECT datediff(MINUTE, cast('2016-03-30 13:55:01' as TIMESTAMP), cast('2016-03-31 07:15:00' as TIMESTAMP)) from DUMMY;
Ergebnis: 1040
Ich muss das natürlich gegen irgendwas selektieren. In diesem Fall die "DUMMY" Tabelle, die einen einzelnen Datensatz enthält. (Kannst auch FROM RDB$DATABASE oder sowas nehmen)