¿Cómo puedo convertir una cadena en una fecha en T-SQL?
Mi caso de prueba es la cadena: '24.04.2012'
¿Cómo puedo convertir una cadena en una fecha en T-SQL?
Mi caso de prueba es la cadena: '24.04.2012'
Respuestas:
CONVERT(datetime, '24.04.2012', 104)
Debería hacer el truco. Consulte aquí para obtener más información: CAST y CONVERT (Transact-SQL)
Formatos de fecha de Microsoft SQL
CONVERT(DateTime, DateField, 104)
Suponiendo que la base de datos sea MS SQL Server 2012 o superior, aquí hay una solución que funciona. La declaración básica contiene el try-parse en línea:
SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
Esto es lo que implementamos en la versión de producción:
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';
Las columnas ModifiedOn y ModifiedBy son solo para fines de seguimiento de la base de datos interna.
Consulte también estas referencias de Microsoft MSDN:
Aunque lo de CONVERT funciona, en realidad no deberías usarlo. Debería preguntarse por qué está analizando valores de cadena en SQL-Server. Si este es un trabajo único en el que está arreglando manualmente algunos datos, no obtendrá esos datos en otro momento, está bien, pero si alguna aplicación lo está usando, debe cambiar algo. La mejor forma sería utilizar el tipo de datos "fecha". Si se trata de una entrada del usuario, es aún peor. Entonces, primero debería hacer un chequeo del cliente. Si realmente desea pasar valores de cadena donde SQL-Server espera una fecha, siempre puede usar el formato ISO ('AAAAMMDD') y debería convertir automáticamente.
Puedes usar:
SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
Referencia: CAST y CONVERT (Transact-SQL)
CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
hará lo que sea necesario, resultado:
2012-04-24 00:00:00.000