Convert string to date

mercoledì 23 giugno 2010 - 14.09

maurik Profilo | Junior Member

Salve , avrei bisogno di un vostro aiuto vi espongo il problema:

Ho una tabella con un campo valorizzato da un fogli excel.Il campo dovrebbe essere una data sul db invece è un varchar. In questo campo arrivano delle stringhe in questo modo "dic 23 2008 1:12PM" oppure "12/12/2009 16.59.35" il mio probelma è che quando vado a fare un operazione di convert in date su questo campo(che è varchar) se la stringa passata è in questo modo - 12/12/2009 16.59.35 non c'è nessun problema mentre se il valore è dic 23 2008 1:12PM mi da un errore di conversione. E' giusto perche invece di passare dec 23 2008 ... gli viene passato dic 23 2008 .... quindi in italiano come faccio a fargli eseguire la conversione in data????

select convert(date,'dic 23 2008',100) from dbo.EMESSO_NIP


Grazie

Maurizio

lbenaglia Profilo | Guru


>Ho una tabella con un campo valorizzato da un fogli excel.Il
>campo dovrebbe essere una data sul db invece è un varchar. In
>questo campo arrivano delle stringhe in questo modo "dic 23 2008
>1:12PM" oppure "12/12/2009 16.59.35" il mio probelma è che quando
>vado a fare un operazione di convert in date su questo campo(che
>è varchar) se la stringa passata è in questo modo - 12/12/2009
>16.59.35 non c'è nessun problema mentre se il valore è dic 23
>2008 1:12PM mi da un errore di conversione. E' giusto perche
>invece di passare dec 23 2008 ... gli viene passato dic 23 2008
>.... quindi in italiano come faccio a fargli eseguire la conversione
>in data????

Ciao Maurizio,

Come hai giustamente scritto "dic" è l'abbreviazione di dicembre nella nostra lingua, quindi devi istruire SQL Server a "comprendere" l'Italiano
Come? Hai due possibilità:

1) Associare l'italiano come lingua di default alla login che utilizzi per autenticarti all'istanza;
2) Forzare la lingua italiana in ogni sessione.

Dalle prove che hai fatto mi sembra di capire che con molta probabilità la lingua di default associata alla tua login non è l'italiano (probabilmente è l'inglese) quindi se non vuoi modificare questa impostazione puoi ricorrere alla seconda opzione:

SET LANGUAGE italiano; SELECT CAST('dic 23 2008 1:12PM' AS datetime) AS Conversione; /* Output: Conversione ----------------------- 2008-12-23 13:12:00.000 (1 row(s) affected) */

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5