sql >> Base de Datos >  >> RDS >> Sqlserver

6 formas de convertir una cadena en un valor de fecha/hora en SQL Server

Si necesita convertir una cadena en un valor de fecha/hora en SQL Server, tiene varias opciones. En esta publicación, describo seis funciones de T-SQL que le permiten hacer esto.

Las seis funciones son:

  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

A continuación se muestra un ejemplo de cómo puede utilizar estas funciones para convertir una cadena en un tipo de datos de fecha/hora.

Función CAST()

En este ejemplo, convertimos la cadena en una fecha tipo de datos (lo especificamos usando date como segundo argumento).

SELECT CAST('20 Dec 2018' AS date) AS Result;

Resultado:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Para obtener más ejemplos, consulte Cómo convertir una cadena en una fecha/hora en SQL Server usando CAST() .

Función CONVERTIR()

Aquí, hacemos la misma conversión que en el ejemplo anterior, pero con CONVERT() función. La única diferencia aquí es la sintaxis.

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Resultado:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Para obtener más ejemplos, consulte Cómo convertir una cadena en una fecha/hora en SQL Server usando CONVERT() .

Función ANÁLISIS()

En este ejemplo, agrego el día de la semana como parte de la cadena. La razón por la que hago esto es para demostrar el beneficio que tiene esta función sobre las demás. Si proporciona la fecha en este formato a las otras funciones, obtendrá un error. Pero el PARSE() función puede manejar esto:

SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) 
AS 'Result';

Resultado:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Para obtener más ejemplos, consulte Cómo convertir una cadena en una fecha/hora en SQL Server usando PARSE() .

La función TRY_CAST()

Puedes usar TRY_CAST() en lugar de CAST() para proporcionar una forma más fluida de manejar los errores. Al usar CAST() función, si la conversión falla, devuelve un error. Sin embargo, si usa el TRY_CAST() en su lugar, devuelve NULL en tales casos.

Este es un ejemplo de un error de transmisión:

SELECT TRY_CAST('Next month' AS date) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Si proporcionamos ese mismo valor a CAST() en su lugar, esto es lo que sucede:

SELECT CAST('Next month' AS date) AS Result;

Resultado:

Conversion failed when converting date and/or time from character string.

Para ver más ejemplos, consulta CAST. frente a TRY_CAST en SQL Server:¿Cuál es la diferencia?

Función TRY_CONVERT()

También puede usar TRY_CONVERT() en lugar de CONVERT() para un mejor manejo de errores. Si CONVERT() la función falla, devuelve un error. Pero si TRY_CONVERT() falla, devuelve NULL .

Este es un ejemplo de un error de conversión:

SELECT TRY_CONVERT(date, 'Next month') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Si proporcionamos ese mismo valor a CONVERT() en su lugar, esto es lo que sucede:

SELECT CONVERT(date, 'Next month') AS Result;

Resultado:

Conversion failed when converting date and/or time from character string.

Para ver más ejemplos, consulte CONVERT. frente a TRY_CONVERT en SQL Server:¿Cuál es la diferencia?

Función TRY_PARSE()

También puede usar TRY_PARSE() en lugar de PARSE() para un mejor manejo de errores. Si PARSE() la función falla, devuelve un error. Pero si el TRY_PARSE() falla, devuelve NULL .

Este es un ejemplo de un error de conversión:

SELECT TRY_PARSE('Next month' AS date) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Si proporcionamos ese mismo valor a PARSE() en su lugar, esto es lo que sucede:

SELECT PARSE('Next month' AS date) AS Result;

Resultado:

Error converting string value 'Next month' into data type date using culture ''.