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

Cómo convertir una cadena en una fecha/hora en SQL Server usando CONVERT()

En SQL Server, puede usar CONVERT() función para convertir una expresión de un tipo de datos a otro. Por lo tanto, si necesita convertir una cadena a un formato de fecha/hora, esta función puede ayudar.

Este artículo contiene ejemplos para demostrar su uso.

Sintaxis

La sintaxis es así:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Estos argumentos se definen de la siguiente manera:

expression
Cualquier expresión válida.
data_type
El tipo de datos de destino. Esto incluye xmlgrandesql_variant . No se pueden utilizar tipos de datos de alias.
length
Un entero opcional que especifica la longitud del tipo de datos de destino. El valor predeterminado es 30 .
style
Una expresión entera que especifica cómo CONVERT() la función traducirá expresión . Para un valor de estilo NULL, se devuelve NULL. tipo_datos determina el rango.

Ejemplo 1:convertir a tipo de datos de fecha

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

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

Resultado:

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

Por supuesto, la cadena debe tener un estilo que se pueda convertir al tipo de datos especificado; de lo contrario, obtendrá un error:

SELECT CONVERT(date, 'Homer') AS Result;

Resultado:

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

Ejemplo 2:convertir a tipo de datos de fecha y hora

En este ejemplo, convertimos a datetime tipo de datos:

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

Resultado:

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

También puede especificar la hora:

SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;

Resultado:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+

Ejemplo 3:convertir al tipo de datos datetime2

En este ejemplo, convertimos a datetime2 tipo de datos:

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

Resultado:

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

Ejemplo 4:convertir a tipo de datos datetimeoffset

En este ejemplo, convertimos a datetimeoffset tipo de datos:

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

Resultado:

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

Ejemplo 5:convertir a tipo de datos smalldatetime

En este ejemplo, convertimos a smalldatetime tipo de datos:

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

Resultado:

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

Ejemplo 6:convertir a tipo de datos de tiempo

En este ejemplo convertimos a la hora tipo de datos:

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

Resultado:

+----------+
| Result   |
|----------|
| 00:00:00 |
+----------+

En ese caso, especificamos una fecha pero no una hora, por lo que volvió como 00:00:00 . Aquí hay otro ejemplo en el que en realidad especificamos una hora:

SELECT CONVERT(time, '2pm') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 14:00:00 |
+----------+

Pero si agregamos la fecha, obtenemos un error (a diferencia de un ejemplo anterior cuando convertimos a datetime ):

SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;

Resultado:

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

Entonces, en este caso, deberá convertir a datetime o pequeña fecha y hora .

Ejemplo 7:omisión de la fecha

Si omite la fecha al convertir a datetime o pequeña fecha y hora tipos de datos, devolverá 1900-01-01 como la fecha:

SELECT CONVERT(datetime, '2pm') AS Result;

Resultado:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

Si obtiene un error al intentar convertir una cadena en una fecha, intente PARSE() función en su lugar. Funcionará en algunos casos donde CONVERT() no.

También puede consultar el CAST() función, que es una forma estándar ANSI SQL de convertir entre tipos de datos. Aquí se explica cómo convertir una cadena en una fecha/hora usando CAST() .