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