Categories
werk

11 maanden geleden

Hoe bereken je een datum die 11 maanden terug ligt in SQL? Vraagje van een collega. Ik zet het hier meer als referentie voor mezelf, het is goed om dit te onthouden, maar misschien zijn er nog een paar onder jullie die het ook kunnen gebruiken:
SELECT DATEADD(mm, -11, getdate()) as datum
Easy! DATEADD voegt een aantal dagen, maanden, jaren, whatever, toe aan een datum. mm geeft aan dat het om maanden gaat en door een negatief getal in te vullen gaat hij (uiteraard) aftrekken ipv optellen. Tenslotte geef je nog een datum mee et voila!

Nu kan je daar veel verder in gaan als je dit in combinatie gebruikt met de functie DATEDIFF. Zo krijg je bijvoorbeeld de eerste dag van het jaar door dit te doen:
select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
Ohla! met de datediff bereken je het aantal yy, het aantal jaren dus, tussen 0 en vandaag (getdate()). Nu gaan we dit gebruiken als aantal jaren in de DATEADD om bij 0 op te tellen. Mooi mooi!

6 replies on “11 maanden geleden”

Of voor de laatste dag van vorige maand één jaar geleden:
[SYBASE SQL]
dateadd(dd,-1,convert(datetime,’01 ‘ +
datename(mm, dateadd(mm,-12,getdate())) + ‘ ‘ +
datename(yy, dateadd(mm,-12,getdate()))
))

Heb net een mooi documentje hiervan in onze knowledge base gestoken met nog meer van dit moois :-)

Of voor de laatste dag van vorige maand één jaar geleden:
[SYBASE SQL]
dateadd(dd,-1,convert(datetime,'01 ' +
datename(mm, dateadd(mm,-12,getdate())) + ' ' +
datename(yy, dateadd(mm,-12,getdate()))
))

Heb net een mooi documentje hiervan in onze knowledge base gestoken met nog meer van dit moois :-)

Comments are closed.