datepart-syntaxis
De parameter datepart bepaalt de tijdseenheid waarin het verschil wordt berekend. SQL Server ondersteunt de volgende datepart-waarden:
| Datepart | Aliassen |
|---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
day | dd, d |
hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
Let op: MySQL ondersteunt alleen day als tijdseenheid voor DATEDIFF().
- Aanhalingstekens: Gebruik altijd enkele aanhalingstekens (
') voor datum- en tijdwaarden. - Positieve en negatieve resultaten: In SQL Server is het resultaat positief wanneer
enddate > startdateen anders negatief. - Foutafhandeling: Als het resultaat groter is dan ±2.147.483.647, gebruik dan
DATEDIFF_BIG()in SQL Server.
DATEDIFF()-voorbeelden
Bij het werken met DATEDIFF() kunnen de resultaten positief of negatief zijn. Als enddate later is dan startdate, retourneert DATEDIFF() een positieve waarde. Als enddate eerder is dan startdate, retourneert DATEDIFF() een negatieve waarde.
Voorbeeld 1: Vind het verschil tussen twee datums
In SQL Server:
SELECT DATEDIFF(year, '2022-12-31', '2024-06-01') AS years_difference;
Uitleg: Dit berekent het verschil in jaren tussen de twee datums. Omdat 2023 en een deel van 2024 worden meegeteld, is het resultaat 1.
In MySQL:
SELECT DATEDIFF('2024-06-01', '2022-12-31') AS days_difference;
Uitleg: MySQL ondersteunt alleen verschillen in dagen. Het resultaat is 518.
Voorbeeld 2: Vind het verschil tussen twee timestamps
SELECT
DATEDIFF(hour, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS hours_difference,
DATEDIFF(minute, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS minutes_difference,
DATEDIFF(second, '2023-12-31 00:00:00', '2023-12-31 23:59:59') AS seconds_difference;
Uitleg:
hours_differenceretourneert23omdat de twee timestamps 23 uur uit elkaar liggen.minutes_differenceretourneert1439, wat23 hours * 60 minutesis.seconds_differenceretourneert86,399, wat1439 minutes * 60 secondsis.
Voorbeeld 3: Vind het verschil tussen twee kolommen met datums
Stel, je hebt een tabel orders met order_date en shipped_date. Gebruik DATEDIFF() om de verzendtijd per bestelling te berekenen.
SELECT
order_id,
DATEDIFF(day, order_date, shipped_date) AS shipping_days
FROM sales.orders;
Uitleg: De query berekent het aantal dagen dat nodig was om elke bestelling te verzenden.
Voorbeeld 4. Bepaal het interval tussen de datum van vandaag en een kolom
Met de tabel sales.orders zoals in Voorbeeld 3 kunnen we DATEDIFF() gebruiken om het interval te vinden tussen de datum van vandaag en de datum waarop een bestelling is geplaatst.
SELECT
order_id,
order_date,
GETDATE() AS today_date,
DATEDIFF(day, order_date, GETDATE()) AS days_from_order;
Uitleg:
GETDATE()haalt de huidige datum en tijd op in SQL Server.- Het verschil in dagen tussen de
order_dateen vandaag wordt berekend.
Extra opmerkingen
De functie DATEDIFF() geeft een fout terug als het resultaat buiten bereik valt (d.w.z. groter dan +2.147.483.647 of kleiner dan -2.147.483.647). In dat geval is de functie DATEDIFF_BIG() geschikt.
Veelvoorkomende fouten en troubleshooting
Bij het werken met DATEDIFF() kun je gemakkelijk tegen problemen aanlopen met syntaxis, argumentvolgorde of database-specifiek gedrag. Hieronder staan veelvoorkomende fouten en hoe je ze oplost:
1. Onjuiste aanhalingstekens
Probleem: Aanhalingstekens rond datepart of inconsistente stijlen voor datumliteralen.
Oplossing: Laat datepart altijd onaanhalingsteken en gebruik enkele aanhalingstekens voor datums.
-- Incorrect
SELECT DATEDIFF('year', '2023-01-01', '2024-01-01');
-- Correct
SELECT DATEDIFF(year, '2023-01-01', '2024-01-01');
2. Niet-ondersteunde datepart in MySQL
Probleem: DATEDIFF() in MySQL ondersteunt alleen verschillen in dagen.
Oplossing: Gebruik TIMESTAMPDIFF() voor fijnmazige eenheden zoals jaren of maanden.
-- Correct (MySQL)
SELECT TIMESTAMPDIFF(YEAR, '2023-01-01', '2024-01-01') AS years_difference; -- Returns 1
3. Volgorde van argumenten is belangrijk
Probleem: Het omwisselen van startdate en enddate kan tot onverwachte negatieve resultaten leiden.
Oplossing: Zorg dat startdate eerst komt. Gebruik ABS() als alleen de grootte van het verschil telt.
-- Incorrect
SELECT DATEDIFF(day, '2023-01-05', '2023-01-01'); -- Returns -4
-- Correct
SELECT DATEDIFF(day, '2023-01-01', '2023-01-05'); -- Returns 4
4. Lokaalspecifieke datumopmaak
Probleem: Dubbelzinnige datumformaten (bijv. MM/DD/YYYY vs. DD/MM/YYYY) kunnen fouten veroorzaken.
Oplossing: Gebruik de ISO 8601-standaard (YYYY-MM-DD) om dubbelzinnigheid te voorkomen.
-- Correct
SELECT DATEDIFF(day, '2023-01-01', '2023-12-31'); -- Returns 364
5. Waarden buiten bereik (SQL Server)
Probleem: Grote verschillen groter dan ±2.147.483.647 veroorzaken een overflow-fout.Oplossing: Gebruik DATEDIFF_BIG() voor grote bereiken.
-- Correct
SELECT DATEDIFF_BIG(day, '0001-01-01', '9999-12-31'); -- Returns 2,920,862,800
Technische vereisten
Werkt in SQL Server (vanaf 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse
Zie ook
Meer leren over SQL

Als data scientist bij Tiktok en masterstudent aan GeorgiaTech heb ik een aangeboren passie voor data science. Ik heb een uniek carrièrepad uitgestippeld waarin technologie, risico en voortdurende zelfverbetering samenkomen. Tijdens mijn periode als Data Scientist bij Merchant Platform beperkte ik risico’s en bestreed ik fraude met complexe datamodellen, waarmee ik wekelijks duizenden dollars bespaarde. Ik heb mijn vaardigheden aangescherpt door talloze uren aan zelfstudie te wijden, certificaten te behalen bij gerenommeerde instellingen en me te bekwamen in onderwerpen als Deep Learning, TensorFlow en Social Network Analysis. Op DataCamp en andere onderwijsplatforms gebruik ik deze schat aan kennis om anderen te inspireren en te onderwijzen, nieuwe paden te banen binnen data science en te laten zien dat met vastberadenheid en de juiste data elk risico kan worden omgezet in een kans.

DATEDIFF()is een van de meestgebruikte functies voor het manipuleren van datum en tijd in SQL. In deze tutorial leer je de toepassing, syntaxis en belangrijkste verschillen tussen populaire SQL-dialecten, zodat je deze krachtige functie onder de knie krijgt.Wat is de DATEDIFF()-functie?
De functie
DATEDIFF()berekent het verschil tussen twee datum- of timestampwaarden en geeft het resultaat terug in een opgegeven eenheid, zoals dagen, maanden of jaren.DATEDIFF-syntaxis in verschillende SQL-dialecten
De syntaxis voor
DATEDIFF()verschilt per SQL-dialect. Hieronder staan voorbeelden voor veelgebruikte databases:Parameter
Wat is het?
datepartEen vereiste parameter. Dit is de eenheid waarin
DATEDIFF()het verschil tussen destartdateenenddaterapporteert. Zie de volgende sectie voor de verschillende typen waarden die het kan hebben.startdateEen vereiste parameter die een datetimewaarde aanduidt die de startdatum aangeeft.
enddateEen vereiste parameter die een datetimewaarde aanduidt die de einddatum aangeeft.