Come convertire una stringa “gg / mm / aaaa” in data / ora in SQL Server?

Ho provato questo

SELECT convert(datetime, '23/07/2009', 111)

ma ha ottenuto questo errore

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

però

SELECT convert(datetime, '07/23/2009', 111)

va bene però

Come aggiustare il primo?

L’ultimo argomento di CONVERT sembra determinare il formato utilizzato per l’analisi. Consultare i documenti MSDN per CONVERT .

111 – quello che stai utilizzando è Japan yy/mm/dd .

Immagino che quello che stai cercando sia 103 , cioè dd/mm/yyyy .

Quindi dovresti provare:

  SELECT convert(datetime, '23/07/2009', 103) 

Provare:

 SELECT convert(datetime, '23/07/2009', 103) 

questo è lo standard britannico / francese.

 SELECT convert(varchar(10), '23/07/2009', 111) 

SQL Server utilizza per impostazione predefinita il formato della data mdy e quindi funziona di seguito:

 SELECT convert(datetime, '07/23/2009', 111) 

e questo non funziona:

 SELECT convert(datetime, '23/07/2009', 111) 

Io stesso ho faticato a trovare una singola query in grado di gestire entrambi i formati di data: mdy e dmy .

Tuttavia, dovresti essere ok con il terzo formato data – ymd .

 SELECT convert(datetime, '23/07/2009', 103)