SQL DateDiff in jaren kloppend krijgen

DateDiff met jaren werkt zeer eenvoudig: het pakt het jaar deel van de beide datums en haalt deze van elkaar af. Dat is lang niet altijd terecht. In veel gevallen wil je namelijk dat daadwerkelijk wordt gekeken naar de datums als geheel, in plaats van alleen naar het jaar gedeelte. Een voorbeeld kan dit verschil snel duidelijk maken.

Stel je twee datums voor: 31-12-2019 en 02-01-2020. Tussen deze beide datums zit 2 dagen verschil. Gebruik je de DATEDIFF functie om het aantal jaren verschil te weten te komen, dan gebruik je de volgende query:


SELECT		DATEDIFF(year, '2019-12-31','2020-01-02') AS 'verschilJaar'
			

De uitkomst is 1 jaar. In een aantal gevallen (namelijk als je alleen kijkt naar het jaar deel van de beide datums) klopt dit natuurlijk, maar soms wil je het toch echt dat er wordt gekeken naar het daadwerkelijke verschil tussen beide datums, en dat dit wordt afgerond in jaren.

Hoe je dit het beste oplost is afhankelijk van de gewenste precisie. De oplossing is namelijk om het verschil eerst te berekenen met een kleine tijdeenheid. Je kunt dat doen met maanden, maar ook met dagen, minuten of elke andere tijdeenheid. Hoe kleiner de gekozen tijdeenheid, hoe preciezer de uitkomst. Een paar voorbeelden met toenemende precisie:


SELECT		DATEDIFF(month, '2019-12-31','2020-01-02')/12 AS 'verschilJaarOpBasisVanMaanden';
SELECT		DATEDIFF(minute, '2019-12-31','2020-01-02')/(60.0*24*365.256) AS 'verschilJaarOpBasisVanMinuten';
			

In het geval van minuten heb je een behoorlijke precisie te pakken: de uitkomst is in dat geval 0.00547561162581!

Over mij

Mijn naam is Marcel van Langen. Ik ben werkzaam als freelancer. Een harde en eerlijke werker, met een passie voor doelgerichte oplossingen. Ik voer al jaren mooie klussen uit voor geweldige klanten. Mijn technische specialisaties zijn het Thinkwise platform, SQL Server en ColdFusion development.

Lees verder...
Diensten