Direkt zum Inhalt

DATEDIFF() SQL-FUNKTION

DATEDIFF() ist eine der am häufigsten verwendeten Funktionen zur Manipulation von Datumsdaten in SQL. Beherrsche sie, indem du dieses Tutorial liest.
Aktualisierte 11. Sept. 2024  · 3 Min. Lesezeit

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?

datepart

Ein erforderlicher Parameter. Dies ist die Einheit, in der DATEDIFF() die Differenz zwischen startdate und enddate angibt. Im folgenden Abschnitt findest du die verschiedenen Arten von Werten, die er enthalten kann. 

startdate

Eine erforderliche Angabe, die einen Datetime-Wert angibt, der das Startdatum bezeichnet. 

enddate

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, oder yyyy
  • 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

SELECT DATEDIFF(year, ‘2022-12-31', ‘2024-06-01')

1

SELECT DATEDIFF(quarter, ‘2022-12-31', ‘2024-06-01')

2

SELECT DATEDIFF(month, ‘2022-12-31', ‘2024-06-01')

6

SELECT DATEDIFF(day, ‘2022-12-31', ‘2024-06-01')

153

SELECT DATEDIFF(week, ‘2022-12-31', ‘2024-06-01')

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

SELECT DATEDIFF(hour,'2023-12-31 00:00:00', '2023-12-31 00:59:59')

0

SELECT DATEDIFF(minute,'2023-12-31 00:00:00','2023-12-31 00:59:59')

59

SELECT DATEDIFF(second,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599

SELECT DATEDIFF(millisecond,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599000

SQL Upskilling für Einsteiger

Erwerbe die SQL-Kenntnisse, um mit deinen Daten zu interagieren und sie abzufragen.
Kostenloses Lernen beginnen

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

order_id

order_date

shipped_date

order_to_ship_days

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

order_id

order_date

shipped_date

order_to_ship_days

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

Siehe auch

Erfahre mehr über SQL

Werde SQL-zertifiziert

Beweise mit einer Zertifizierung, dass deine SQL-Kenntnisse für den Job geeignet sind.
Themen

Beliebte SQL-Kurse

Kurs

Introduction to SQL

2 hr
921.7K
Learn how to create and query relational databases using SQL in just two hours.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen