Bookmark and Share

Thursday, February 14, 2008

Sql Server DateTime Format

A volte su SQL server può essere necessario ricavare alcune date “pulite” dall’orario partendo da un semplice GetDate().

Ad esempio può servire la data del primo giorno della settimana, o del primo giorno del mese ecc.

Ecco un modo abbastanza elegante per ricavare questi dati:

select getdate() --ora iniziale
2008-02-14 17:31:13.727

select DATEADD(dd, DATEDIFF(d,0,getdate()), 0) --oggi
Output: 2008-02-14 00:00:00.000

select DATEADD(dd, DATEDIFF(d,-1,getdate()), 0) --domani
Output: 2008-02-15 00:00:00.000

select DATEADD(dd, DATEDIFF(d,2,getdate()), 0) --ieri
Output: 2008-02-12 00:00:00.000

select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --mese corr
Output: 2008-02-01 00:00:00.000

select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) --lunedì
Output: 2008-02-11 00:00:00.000

select dateadd(wk,-1,DATEADD(wk, DATEDIFF(wk,0,getdate()),0)) --settimana scorsa
Output: 2008-02-04 00:00:00.000

select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) --quest'anno
Output: 2008-01-01 00:00:00.000

select dateadd(m,-1,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --1 mese fa
Output: 2008-01-01 00:00:00.000

select dateadd(m,-6,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --6 mesi fa
Output: 2007-08-01 00:00:00.000

Spero sia utile,

Matteo