23 gennaio 2010

sql per esempio (parte 2a)

Proseguiamo nella nostra esercitazione sulle varie elaborazioni possibili in tema di date e riprendiamo lo script con cui avevo concluso il post precedente:

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))

Eseguendolo oggi ha fornito questo risultato:

sabato, 23 gennaio 2010 settimana num. 4

Il risultato deriva dai seguenti cinque elementi dell'espressione (che per maggiore chiarezza abbiamo esposto su cinque righe):

Sabato, cioè il nome del giorno della settimana, la cui espressione è la seguente:

datename (dw, getdate())

dove getdate() rappresenta la data di oggi.

La seconda parte dell'espressione:

+', '+ rtrim(cast(datepart (dd,getdate()) as char))


aggiunge (+) la stringa con la virgola ed il numero:
, 23
dopo il nome del giorno.

Per farlo è stato necessario ricavare il 23, cioè il numero del giorno del mese con la funzione:

datepart (dd,getdate())

poi si è dovuto convertire il numero in formato testo, per renderlo compatibile con il resto della stringa,  utilizzando la funzione:

cast(datepart (dd,getdate()) as char)

Infine occorreva un'altra operazione di pulizia, eliminare gli spazi vuoti che si creano dopo la conversione del numero al formato testo. La funzione che esegue questa operazione è la seguente:

rtrim(cast(datepart (dd,getdate()) as char))

Passando alla terza parte dell'espressione,
+' '+rtrim(datename (mm, getdate()))

questa fornisce il nome del mese, gennaio, con la funzione datename(mm,...), togliendo gli spazi vuoti grazie alla funzione rtrim().

L'anno, 2010, viene fornito dall'espressione

+' '+ rtrim(cast(datepart (yyyy,getdate()) as char))

che lo estrae dalla data e lo converte in testo, perchè la conversione in testo dei numeri è necessaria quando si deve comporre un espressione che combina parti di testo e parti numeriche, come appunto nel caso che stiamo esaminando.

Infine l'espressione si conclude con l'indicazione del numero della settimana (4):

+' settimana num. '+ rtrim(cast(datepart (wk,getdate()) as char))

numero che viene estratto con la funzione datepart(wk,...), convertito in testo con la funzione cast(as ....char), ripulito degli spazi vuoti con la funzione rtrim() e aggiunto alla stringa fissa 'settimana num. '

Fine dell'esercitazione.
Arrivederci alla prossima.

G.M.