SQL: Anzahl der Tage zwischen zwei Datumsangaben ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Viele SQL-Dialekte erlauben dazu eine einfache Subtraktion der beiden Werte. Manche SQL-Dialekte haben spezielle Funktionen wie DateDiff() oder age() implementiert, um Zeitintervalle (auch abweichend von Tagen) zu ermitteln zu können.


Es soll z. B. die Differenz in Tagen zwischen dem Einstelldatum von Allard und Wecker ermittelt werden.

Lösung in Jet-SQL

Hinweis für Access-Anwender
Um die folgende Abfrage selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.

Ergebnis durch Differenzbildung

SELECT abs( wecker_ed - allard_ed ) AS tage
FROM   ( SELECT eingestellt AS wecker_ed
	 FROM   mitarbeiter
	 WHERE  ma_name = 'Wecker' ) AS w,
       ( SELECT eingestellt AS allard_ed
         FROM   mitarbeiter
         WHERE  ma_name = 'Allard' ) AS a

Ergebnis aus DateDiff()-Funktion

SELECT abs( DateDiff( 'd', wecker_ed, allard_ed ) ) AS tage
FROM   ( SELECT eingestellt AS wecker_ed
	 FROM   mitarbeiter
	 WHERE  ma_name = 'Wecker' ) AS w,
       ( SELECT eingestellt AS allard_ed
         FROM   mitarbeiter
         WHERE  ma_name = 'Allard' ) AS a

Beide Abfragen liefern liefern uns 2 Tage Differenz.


Lösung in PostgreSQL

SELECT age( wecker_ed, allard_ed ) AS iso_intervall,
       abs( EXTRACT( DAY FROM age( allard_ed, wecker_ed ) ) )::INTEGER AS tage
FROM   ( SELECT eingestellt AS wecker_ed
	 FROM   mitarbeiter
	 WHERE  ma_name = 'Wecker' ) AS w,
       ( SELECT eingestellt AS allard_ed
         FROM   mitarbeiter
         WHERE  ma_name = 'Allard' ) AS a

Das Ergebnis kann in diesem DBFiddle betrachtet werden.



Zurück zur Übersicht