SQLSERVER: la gestione delle date



Usando il linguaggio SQL è spesso è necessario sapere una data riferendosi al giorno, mese o anno corrente, precedente o successivo a quello corrente o rispetto ad una data.
Questi potrebbero essere esempi di richieste che potremmo aver necessità di risolvere via SQL: “Che giorno è oggi ^ “, oppure “Quanti giorni ha il mese corrente ?”

Di seguito alcune di queste date estratte mediante delle query SQL che fanno riferimento alla gestione delle date di SQLSERVER.
Tutte le query che seguono (che sono direttamente lanciabili dal Query Analyser di SQL Management Studio) hanno come nome del campo la descrizione del valore ritornato .

Partiamo da alcune date riferite alla giornata odierna:

--Oggi
SELECT GETDATE() 'Oggi'
--Ieri
SELECT DATEADD(d,-1,GETDATE()) 'Ieri'
--Domani
SELECT DATEADD(d,+1,GETDATE()) 'Domani'

Ora vediamo dei giorni riferiti alla settimana corrente:


--Primo giorno della Settimana corrente
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 'Primo giorno della Settimana corrente'

--Ultimo giorno della Settimana corrente
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6) 'Ultimo giorno della Settimana corrente'
--Primo giorno della Settimana precedente
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) 'Primo giorno della Settimana precedente'
--Ultimo giorno della Settimana precedente
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),6) 'Ultimo giorno della Settimana precedente'

Riferiamoci ora al mese corrente:


--Primo giorno del Mese corrente
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0) 'Primo giorno del Mese corrente'
--Ultimo giorno del Mese corrente
SELECT DATEADD(ms,-
3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))) 'Ultimo giorno del Mese corrente'
--Primo giorno del Mese precedente
SELECT DATEADD(mm,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) 'Primo giorno del Mese precedente'
--Ultimo giorno del Mese precedente
SELECT DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) 'Ultimo giorno del Mese precedente'

Ed infine all’anno corrente:


--Primo giorno del anno corrente
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0) 'Primo giorno del anno corrente'
--Ultimo giorno del anno corrente
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))) 'Ultimo giorno del anno corrente'
--Primo giorno del anno precedente
SELECT DATEADD(yy,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)) 'Primo giorno del anno precedente'
--Ultimo giorno del anno precedente
SELECT DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0))) 'Ultimo giorno del anno precedente'

Proviamo ora ad ottenere qualcosa di più interessante combinando alcune query viste in precedenza:

-- numero di giorni dell'anno corrente
SELECT DATEDIFF(DAY, DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0),
DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))))+1
'giorni anno'

— giorni mancanti alla fine dell’anno
SELECT DATEDIFF(DAY, GETDATE(),
DATEADD(ms,-3,DATEADD(yy,0,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0)))) ‘giorni a fine anno’

— giorni tra due qualsiasi date (attenzione: il formato delle date è: ‘MM/GG/AAAA’ ):
SELECT DATEDIFF(DAY, ’02/10/2009′, ’02/14/2009′) ‘giorni tra date’
ed infine vogliamo sapere il giorno della settimana di una certa data:

SELECT DATENAME(weekday, '02/14/2009') 'giorno'

Sul mio sito http://www.abspace.it/ComputerSpace/SQLCheatSheet.asp trovate un utile reference manual su SQL SERVER e ele sue funzionalità.

Spero di aver fatto chiarezza sulle date e di esservi stato utile.
alberto bellina

Annunci sponsorizzati:

Ricerche effettuate:

  • data anno scorso in sql
  • sql gestione date
Condividi su Facebook Condividi su Twitter!
Pinterest