Zitat Zitat von Fuerchau Beitrag anzeigen
Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
Eine DIFF-Funktion gibt es nicht (zumindest nicht auf Db2 for i)!
Es gibt noch die eine Funktionen TimestampDiff und TimestampDiff_Big die (fast) jede beliebige Zeit-Differenz (Mikro-Sekunden, Sekunden, Minuten, Stunden, Tage, Wochen, Monate, Quartale, Jahre) zwischen 2 Zeitmarken berechnen kann.
Allerdings gehen diese Funktionen von Schätzwerten aus, d.h. ein Jahr hat 365 Tage und ein Monat 30 Tage.

Wenn man die Differenz in Tagen benötigt, sollte man die Funktion DAYS verwenden und beide Werte in die rechnerische Anzahl Tage seit dem 01.01.0001 konvertieren und dann beide Werte subtrahieren.
Diese Anzahl an Tagen stimmt!

Die Differenz-Rechnung von Zeiten ist korrekt.
Benötigt man die Differenz in Anzahl Sekunden zwischen 2 Zeitwerten oder Zeitmarken mit dem gleichen Datum), kann man die Anzahl Sekunden (seit Mitternacht) mit Midnight_Seconds für beide Werte ermitteln und anschließend subtrahieren.
Oder man verwendet TimestampDiff (die ein bisschen unhandlich ist, da die Differenz alphanumerisch (CHAR(22) in YYYYMMDDHHMMSS,MSMSMS (plus Vorzeichen) übergeben werden muss).

Falls man für eine Zeitmarke in Anzahl Sekunden nach Microsoft (Sekunden seit 01.01.1970-00-00-00) kann man diese über die Funktion EXTRACT ermitteln:
Code:
EXTRACT(Epoch from YourTimestamp)