COnversione un campo dateTime in string

giovedì 12 luglio 2007 - 21.07

bluelions Profilo | Senior Member

Salve e scusatemi la mia poca conoscenza in sql....
Volevo chiedervi come posso fare una conversione da un campo DateTime in NVarchar().
Mi spiego meglio, ho una tabella dove all'interno c'è un campo datetime, ora faccio una query e mi seleziono anche il campo data che a sua volta mi restiturisce il valore: 2007-07-12 12.12.00 io dalla query voglio prendermi solo la data ed in formato italiano, perchè devo metterla in una colonna del datalist e invece di fare ogni volta il convert da codice, vorrei farlo una sola volta nella query.....e mi domandavo è possibile farlo?
Resto in attesa di una vostra sicura risposta
Saluti

lbenaglia Profilo | Guru

>Salve e scusatemi la mia poca conoscenza in sql....

Ciao bluelions,

Perché devi scusarti?

>Mi spiego meglio, ho una tabella dove all'interno c'è un campo
>datetime, ora faccio una query e mi seleziono anche il campo
>data che a sua volta mi restiturisce il valore: 2007-07-12 12.12.00
>io dalla query voglio prendermi solo la data ed in formato italiano,
>perchè devo metterla in una colonna del datalist e invece di
>fare ogni volta il convert da codice, vorrei farlo una sola volta
>nella query.....e mi domandavo è possibile farlo?
Il valore 2007-07-12 12.12.00 che tu vedi, in realtà è una delle tante formattazioni (per la precisione è la formattazione ODBC canonical) dei data type datetime e smalldatetime.

SQL Server attualmente offre appunto 2 data type per la memorizzazione di date e ore: datetime e smalldatetime.
Internamente entrambi i data type memorizzano queste informazioni tramite una coppia di interi (rispettivamente 4 + 4 bytes e 2 + 2 bytes, dove il primo intero rappresenta la data ed il secondo l'ora).
I due data type differiscono per il range di validità e per la precisione.

"Tipi di dati data/ora (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms187819.aspx

Ora, se vuoi castare i data type datetime e smalldatetime a stringa applicando una formattazione esplicita, puoi ricorrere alla funzione CONVERT, specificando lo stile di formattazione (che per il formato italiano corrisponde a 5 o 105 se vuoi considerare anche il secolo).

Vediamo un piccolo esempio:

SELECT CURRENT_TIMESTAMP AS DataDiSistema , CONVERT(varchar(10), CURRENT_TIMESTAMP, 105) AS Data; /* Output: DataDiSistema Data ----------------------- ---------- 2007-07-12 22:36:16.263 12-07-2007 (1 row(s) affected) */

Come vedi ho convertito il valore CURRENT_TIMESTAMP (che restituisce la data e ora di sistema) in una stringa di 10 caratteri (escludendo in questo modo l'informazione oraria) applicando lo stile 105.

Per ulteriori dettagli fai riferimento a questo paragrafo dei Books Online:

"CAST e CONVERT (Transact-SQL)"
http://msdn2.microsoft.com/it-it/library/ms187928.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

bluelions Profilo | Senior Member

Ti ringrazio per la spiegazione, sei stato chiaro e molto gentile.


Alla prossima....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5