Hallo zusammen,
ich möchte in einer MS SQL Server 2005 Umgebung die Differenz zwischen 2 Datumswerten in Tagen, Stunden, Minuten und Sekunden ermitteln.
Die beiden Datumsfelder sind vom Datentyp datetime.
Ich habe dazu bereits ein Script geschrieben, bei dem ich mit datediff die Differenz zwischen den beiden Werten in Sekunden ermittle, und daraus dann die vollen Tage (= 86400 Sekunden) rausrechne, aus dem verbleibenden Rest die vollen Stunden (= 3600 Sekunden) ermittle, vom verbleibenden Rest die vollen Minuten ( = 60 Sekunden) ermittle usw.
Diese Lösung erscheint mir aber sehr kompliziert und ich bin der Meinung, dass es dafür auch eine einfachere Lösung in SQL geben muß. Vielleicht kann mir von Euch jemand einen Tipp geben. Danke!
Nachfolgend das von mir entwickelte Script:
select
Datumswert1
, Datumswert2
—Tage Ermittlung
, Convert(int, datediff(second, Datumswert1, Datumswert2)/ 86400) AS Tage
—Stunden Ermittlung
, Convert(int, (datediff(second, Datumswert1, Datumswert2) - (Convert(int, (datediff(second, Datumswert1, Datumswert2)/86400)) * 86400)) / 3600) AS Stunden
—Minuten-Ermittlung
, (
datediff(second, Datumswert1, Datumswert2) - ((Convert(int, (datediff(second, Datumswert1, Datumswert2)))/86400) * 86400)
- ((datediff(second, Datumswert1, Datumswert2) - (Convert(int, (datediff(second, Datumswert1, Datumswert2)/86400)) * 86400)) / 3600) * 3600
) / 60 AS Minuten
—Sekunden Ermittlung
, (
datediff(second, Datumswert1, Datumswert2)
((Convert(int, (datediff(second, Datumswert1, Datumswert2)))/86400) * 86400)
((datediff(second, Datumswert1, Datumswert2)
(Convert(int, (datediff(second, Datumswert1, Datumswert2)/86400)) * 86400)) / 3600) * 3600
)
((
datediff(second, Datumswert1, Datumswert2) - ((Convert(int, (datediff(second, Datumswert1, Datumswert2)))/86400) * 86400)
- ((datediff(second, Datumswert1, Datumswert2) - (Convert(int, (datediff(second, Datumswert1, Datumswert2)/86400)) * 86400)) / 3600) * 3600
) / 60) * 60 AS Sekunden
from
Tabelle