29 dicembre 2009

sql per esempio

Per noi profani (o ex profani) sql ha sempre avuto un fascino particolare, il fascino di uno strumento potente per estrarre e organizzare informazioni.
Chi ha giocato (o più che giocato) con Access sa di cosa sto parlando, ma i più non si sono mai  spinti fino al punto di abbandonare i comodi wizard per navigare nel mare aperto dei potenti script sql.
Credo che una responsabilità della limitata diffusione di questo linguaggio sia da imputare ai manuali.
Quello che è mancato in questo campo è una sorta di Astolfi-Negri o di Ferrero-Dezzani delle tecniche sql, manuali che, nel campo della ragioneria, davano la giusta proporzione a teoria e pratica, arricchendo  i concetti sempre con esempi chiari e completi.
I manuali di sql (*) parlano un liguaggio che è più complicato dello stesso sql e riportano esempi talmente striminziti che spesso confondono ancora di più le idee del lettore.
Parliamo ad esempio di date.
La data è uno degli elementi fondamentali di tutte le analisi economiche.
Sapere elaborare le date è fondamentale per chi si accosta a queste tecniche.
Vi propongo dunque qui di seguito alcuni esempi di elaborazioni sulle date basati su sql server.

OGGI e ADESSO: oggi è il 29 dicembre 2009 e adesso sono le ore 8.05

Ebbene come si può ottenere questa semplice ma fondamentale informazione da sql ?

provate a scrivere ed eseguire questa istruzione:
select getdate()
e otterrete un risultato come questo:
2009-12-29 08:05:51.890

IERI: e se volete ottenere la data di ieri ?
Le date sono numeri, dunque per ottenere la data di ieri è sufficiente sottrarre un giorno alla data di oggi.

Quindi scrivete ed eseguite questa istruzione
select getdate()-1
e otterrete un risultato come questo:
2009-12-28 08:08:50.420

---
Bene, per oggi ci fermiamo qui ma ho parecchi altri esempi (**) di elaborazioni sulle date, dunque vi rimando ai prossimi post sullo stesso argomento.

Giorgio Montanari

---
NOTE:

(*) Manuali di sql: una buona panoramica la potete trovare su wikipedia (http://it.wikipedia.org/wiki/SQL)
Per un approfondimento si può vedere anche la documentazione in linea di Microsoft (http://msdn.microsoft.com/it-it/library/ms167593.aspx)

(**) A titolo di anteprima provate ad eseguire (magari con un bel copia e incolla) questa istruzione:

select datename (dw, getdate())
+', '+ rtrim(cast(datepart (dd,getdate()) as char))
+' '+rtrim(datename (mm, getdate()))
+' '+ rtrim(cast(datepart (yyyy,getdate()) as char))
+' settimana num. '+ rtrim(cast(datepart (wk,getdate()) as char))

che sembra piuttosto complicata ma, quando avremo commentato in dettaglio le parti di cui è composta, si rivelerà semplice e comprensibile come il suo risultato:

martedì, 29 dicembre 2009 settimana num. 53