Anzahl der Tage zwischen zwei Daten - ANSI SQL
-
05-07-2019 - |
Frage
Ich brauche eine Möglichkeit, die Anzahl der Tage zwischen zwei Datumsangaben in SQL zu bestimmen.
Antwort in ANSI SQL sein muss.
Lösung
ANSI SQL-92 definiert DATE - DATE als Intervall-Typ zurück. Sie sollen Skalare aus zeitlichen Abständen in der Lage sein mit der gleichen Methode zu extrahieren, wie sie von den Daten zu extrahieren mit - sinnigerweise -. Die Funktion EXTRACT (4.5.3)
arbeitet auf und ein DateTime- oder Intervall Gibt eine exakter numerischer Wert der vertretende Wert einer Komponente der Datumzeit oder Intervall.
Dies ist jedoch sehr schlecht in den meisten Datenbanken implementiert. Du bist wahrscheinlich mit etwas Datenbank spezifischer stecken. DATEDIFF ist ziemlich gut auf verschiedenen Plattformen implementiert.
Hier ist die „richtige“ Art und Weise, es zu tun.
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
Viel Glück!
Andere Tipps
Ich kann mich nicht erinnern, einen RDBMS verwenden, die DATE1-DATE2 und
Ich glaube, die SQL-92-Standard unterstützt Subtrahieren von zwei Daten mit dem '-'. Operator
SQL 92 unterstützt die folgende Syntax:
t.date_1 - t.date_2
Die Funktion EXTRACT auch ANSI, aber es ist nicht auf SQL Server unterstützt. Beispiel:
ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)
die Berechnung in einer Absolutwertfunktion Verpackung stellt sicher, der Wert als positiv herauskommen wird, auch wenn ein kleines Datum der erste Tag.
EXTRACT wird unterstützt unter:
- Oracle 9i +
- MySQL
- Postgres