Kurs
Was ist die DATEDIFF() Funktion?
Die Funktion DATEDIFF() liefert das Intervall zwischen zwei Zeitstempeln oder Datumswerten in einer bestimmten Einheit.
DATEDIFF() syntax
DATEDIFF(datepart, startdate, enddate)
|
Parameter |
Was ist das? |
|
|
Ein erforderlicher Parameter. Dies ist die Einheit, in der |
|
|
Eine erforderliche Angabe, die einen Datetime-Wert angibt, der das Startdatum bezeichnet. |
|
|
Eine erforderliche Angabe, die einen Datetime-Wert angibt, der das Enddatum bezeichnet. |
datepart syntax
Der Parameter datepart kann eine Vielzahl von Werten annehmen, darunter die folgenden
- Jahr:
year,y,yy, oderyyyy - Quartal:
quarter,qq,q - Monat:
month,mm,m - Tag:
dayofyear,day,dd,d - Woche:
week,wk,ww - Stunde:
hour,hh - Minute:
minute,mi,n - Zweitens:
second,ss,s - Millisecond:
millisecond,ms - Mikrosekunde:
microsecond,mcs - Nanosecond:
nanosecond,ns
Beachte, dass datepart nicht in Anführungszeichen gesetzt werden sollte. Die folgende Syntax ist zum Beispiel korrekt:
DATEDIFF(year, ‘2022-01-01', ‘2022-01-02')
Das Folgende ist falsch.
DATEDIFF(‘year', ‘2022-01-01', ‘2022-01-02')
DATEDIFF() Beispiele
Wenn du mit DATEDIFF() arbeitest, können die Ergebnisse entweder positive oder negative Werte sein. Wenn enddate später ist als startdate, dann liefert DATEDIFF() einen positiven Wert. Wenn enddate früher als startdate ist, gibt DATEDIFF() einen negativen Wert zurück.
Beispiel 1: Finde die Differenz zwischen zwei Daten
SELECT DATEDIFF(timepart, ‘2022-12-31', ‘2024-06-01')
|
Abfrage |
Ausgabe |
|
|
1 |
|
|
2 |
|
|
6 |
|
|
153 |
|
|
21 |
Beispiel 2: Finde die Differenz zwischen zwei Zeitstempeln
SELECT DATEDIFF(datepart, '2023-12-31 00:00:00, '2023-12-31 00:59:59')
|
Abfrage |
Ausgabe |
|
|
0 |
|
|
59 |
|
|
3599 |
|
|
3599000 |
SQL Upskilling für Einsteiger
Beispiel 3: Finde die Differenz zwischen zwei Datumsspalten
Betrachte die Tabelle sales.orders, die diese Spalten enthält:
order_date(wenn die Bestellung aufgegeben wird)shipped_date(wenn die Bestellung versandt wird)
Um die Versanddauer zu verfolgen, können wir die Funktion DATEDIFF() nutzen.
SELECT
order_id,
order_date,
shipped_date,
DATEDIFF(day, order_date, shipped_date) order_to_ship_days
FROM sales.orders
|
|
|
|
|
|
1 |
2016-01-01T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
2 |
|
2 |
2016-01-01T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
2 |
|
3 |
2016-01-02T00:00:00.000Z |
2016-01-03T00:00:00.000Z |
1 |
Beispiel 4. Finde das Intervall zwischen dem heutigen Datum und einer Spalte
Wenn wir die Tabelle sales.orders wie in Beispiel 3 verwenden, können wir mit DATEDIFF() das Intervall zwischen dem heutigen Datum und dem Datum, an dem eine Bestellung aufgegeben wird, ermitteln.
SELECT
order_id,
order_date,
GETDATE() AS todays_date,
DATEDIFF(day, order_date, GETDATE()) AS order_to_today -- interval between order_date with today's date
FROM sales.orders
|
|
|
|
|
|
1 |
2016-01-01T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2473 |
|
2 |
2016-01-01T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2473 |
|
3 |
2016-01-02T00:00:00.000Z |
2022-10-09T02:47:00.403Z |
2472 |
Zusätzliche Hinweise
Die Funktion DATEDIFF() gibt einen Fehler zurück, wenn das Ergebnis außerhalb des Bereichs liegt (d.h. der Wert ist größer als +2.147.483.647 oder kleiner als -2.147.483.647). In diesem Fall ist die Funktion DATEDIFF_BIG() geeignet.
Technische Anforderungen
Funktioniert in SQL Server (ab 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse