2009-07-16 4 views
38

Non si tratta di come convertire una stringa arbitraria in datetime in MSSQL, ad esempio this question.SQL Server converte stringa in datetime

Posso controllare il formato stringa ma voglio sapere qual è la sintassi MSSQL per l'aggiornamento di un campo data/ora utilizzando una stringa di data.

risposta

17

Per esempio si può utilizzare

update tablename set datetimefield='19980223 14:23:05' 
update tablename set datetimefield='02/23/1998 14:23:05' 
update tablename set datetimefield='1998-12-23 14:23:05' 
update tablename set datetimefield='23 February 1998 14:23:05' 
update tablename set datetimefield='1998-02-23T14:23:05' 

È necessario essere attenti del giorno ordine/mese da quando questo sarà dipendente dalla lingua quando l'anno non è specificato prima. Se si specifica l'anno quindi non c'è alcun problema; l'ordine di data sarà sempre di anno-mese-giorno.

+3

+1 per yyyy-MM-dd :) – Thorarin

+5

- 1. L'anno prima non garantisce y-m-d. SET LANGUAGE british GO SELECT CAST ('2009-02-28' AS datetime), CAST ('2009-02-28 01:02:03' AS datetime) - anche con errore – gbn

+2

È necessario utilizzare "date" e SQL Server 2008 prima che yyyy-mm-dd funzioni. – gbn

97
UPDATE MyTable SET MyDate = CONVERT(datetime, '2009/07/16 08:28:01', 120) 

Per una discussione piena di CAST e CONVERT, tra le diverse opzioni di formattazione della data, vedere il MSDN Library collegamento sotto:

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

+1

+1 per il collegamento. Molto utile. –

+1

+1 per rispondere alla domanda che stavo cercando, anche se non era la domanda dell'OP :) – Kalessin