Come posso convertire una stringa in una data in T-SQL?
Il mio caso di test è la stringa: '24.04.2012'
Come posso convertire una stringa in una data in T-SQL?
Il mio caso di test è la stringa: '24.04.2012'
Risposte:
CONVERT(datetime, '24.04.2012', 104)
Dovrebbe fare il trucco. Vedi qui per maggiori informazioni: CAST e CONVERT (Transact-SQL)
CONVERT(DateTime, DateField, 104)
Supponendo che il database sia MS SQL Server 2012 o versione successiva, ecco una soluzione che funziona. L'istruzione di base contiene il try-parse in linea:
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
Ecco cosa abbiamo implementato nella versione di produzione:
UPDATE dbo.StagingInputReview
SET ReviewedOn =
ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
-- Check for empty/null/'NULL' text
WHERE not ReviewedOnText is null
AND RTrim(LTrim(ReviewedOnText))<>''
AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
Le colonne ModifiedOn e ModifiedBy servono solo per il monitoraggio del database interno.
Vedi anche questi riferimenti Microsoft MSDN:
Sebbene la cosa CONVERT funzioni, in realtà non dovresti usarla. Dovresti chiederti perché stai analizzando i valori di stringa in SQL-Server. Se questo è un lavoro occasionale in cui stai correggendo manualmente alcuni dati, non otterrai quei dati un'altra volta, va bene, ma se qualsiasi applicazione lo sta usando, dovresti cambiare qualcosa. Il modo migliore sarebbe utilizzare il tipo di dati "data". Se questo è un input dell'utente, è anche peggio. Quindi dovresti prima fare un po 'di controllo nel client. Se vuoi davvero passare valori stringa in cui SQL-Server si aspetta una data, puoi sempre utilizzare il formato ISO ('AAAAMMGG') e dovrebbe convertirsi automaticamente.
Puoi usare:
SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
Riferimento: CAST e CONVERT (Transact-SQL)
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
farà ciò che è necessario, risultato:
2012-04-24 00:00:00.000