• Increase font size
  • Default font size
  • Decrease font size
Home T-SQL Rekenen met datums

Rekenen met datums

E-mail Afdrukken
(2 stemmen)
privilege_reload_128Rekenen met datums kan in SQL Server 2005 op verschillende manieren. SQL Server 2005 kent verschillende functies die je kunt gebruiken als je met datums gaat werken. Dit artikel beschrijft een aantal praktische voorbeelden die je in de praktijk zult tegenkomen als je met databases en datums werkt.

Zo wordt beschreven hoe je terug kunt rekenen in de tijd, hoe je het verschil in dagen tussen diverse datums kunt uitrekenen en hoe je de maand kunt bepalen in een datum.

 





DATEADD()
Deze functie gebruik je om een datum te bepalen die voor of na de opgegeven datum ligt. Je wilt bijvoorbeeld weten wat de datum is die 2 maanden na vandaag ligt of je wilt de datum weten die twee dagen voor 1 augustus ligt.
Syntax
DateAdd(datumgedeelte, getal, datumwaarde)




Voorbeelden
De datum van overmorgen
SELECT DATEADD(dd, 2, GETDATE () )




In bovenstaand voorbeeld zeggen we dat hij in dagen moet rekenen (dd), de 2 geeft aan dat hij 2 dagen vooruit moet rekenen. Het derde argument geeft de datum vanaf wanneer hij moet rekenen, in dit geval vandaag (GETDATE() ). Bij GETGATE() kun je ook een datum meegeven, bijvoorbeeld '2008-12-05' . Let op dat dit tussen quotes moet staan!

De datum van twee maanden geleden
SELECT DATEADD(mm, -2, GETDATE () )




mm geeft maanden aan. -2 geeft aan dat hij 2 maanden terug moet gaan en de GETDATE() geeft de datum van vandaag aan.



Hieronder een tabel met waarden die je kunt invoeren als eerste argument:

artikelen/tsql/rekenen_met_datums/dateadd_function_01.jpg




DATEPART()

Met deze functie kun je de dag, maand, jaar en tijd bepalen in een datumwaarde. Je wilt het maandgedeelte van de datum 2008-12-05 hebben, in dit geval dus 12. Je kunt ook de dag nodig hebben van 12 augustus 2007, de 12 dus.



Syntax

DatePart(datumgedeelte, datumwaarde)



Voorbeelden


De dag van vandaag
SELECT DATEPART(dd,GETDATE() )


Het jaarnummer van vandaag
SELECT DATEPART(yy,GETDATE() )




Hieronder een tabel met waarden die je kunt invoeren als eerste argument:

artikelen/tsql/rekenen_met_datums/dateadd_function_02.jpg




DATEDIFF()

Datediff gebruik je om een interval te berekenen tussen twee datums. Zo kun je het aantal dagen bepalen dat tussen twee datums ligt.



Syntax

DateDiff(datumgedeelte, datumwaarde1, datumwaarde2)



Voorbeelden

Het aantal dagen verschil tussen 1 december 2008 en vandaag (5 december 2008)
SELECT DATEDIFF(dd,'2008-12-01',GETDATE() )


Hieronder een tabel met waarden die je kunt invoeren als eerste argument:

artikelen/tsql/rekenen_met_datums/dateadd_function_03.jpg




DATENAME()

Datename lijkt erg op datepart. Het verschil is dat deze functie een string retourneerd (stukje tekst) en datepart retourneerd een nummer. Deze functie kan de dag van de week in tekst retourneren of de naam van de maand.




Syntax
DateName(datumgedeelte, datumwaarde)



Voorbeelden


De dagnaam van vandaag
SELECT DATENAME (dw, GETDATE() )


Het dagnummer van het jaar van vandaag
SELECT DATENAME (dy, GETDATE() )




Hieronder een tabel met waarden die je kunt invoeren als eerste argument:

artikelen/tsql/rekenen_met_datums/dateadd_function_04.jpg




Een beperking van de functie is dat de functie de engelse namen retourneerd. Ik raad daarom aan altijd gebruik te maken van een datumdimensie. Het grote voordeel van een datumdimensie is dat je voor iedere datum weet in welke week hij valt, welk jaar, welk kwartaal, etc. Daarbij moet je er rekening mee houden dat 1 januari in week 52 van het vorige jaar kan vallen. Het jaar van 1 januari is in dit geval bijvoorbeeld 2008 maar het jaar van het weeknummer is 2007.

Hieronder een voorbeeld van een datumdimensie.

artikelen/tsql/rekenen_met_datums/dateadd_function_05.jpg
Copyright 2008. All Rights Reserved.

Trackback(0)

TrackBack URI voor deze post

Commentaar (1)

RSS feed Commentaar
...
0
Ziet er goed uit!
Roel , december 05, 2008

Schrijf commentaar

kleiner | groter
security image
Schrijf de volgende tekens

busy