En SQL Server, puede usar CAST()
función para convertir una expresión de un tipo de datos a otro. Esta función funciona casi igual que CONVERT()
función, excepto que la sintaxis es ligeramente diferente (y CAST()
no acepta el style
argumento).
Entonces, si necesita convertir una cadena en un valor de fecha/hora, puede usar CONVERT()
o la función CAST()
función.
Y si obtiene un error al usar esas dos funciones, PARSE()
función podría ser justo lo que necesita.
Este artículo contiene ejemplos usando CAST()
función.
Sintaxis
La sintaxis es así:
CAST ( expression AS data_type [ ( length ) ] )
Estos argumentos se definen de la siguiente manera:
expression
- Cualquier expresión válida.
data_type
- El tipo de datos de destino. Esto incluye xml , grande y sql_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
.
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 segundo argumento).
SELECT CAST('20 Dec 2018' AS date) AS Result;
Resultado:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Al igual que con CONVERT()
la cadena debe tener un estilo que se pueda convertir al tipo de datos especificado; de lo contrario, obtendrá un error:
SELECT CAST('Homer' AS date) 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 CAST('20 Dec 2018' AS datetime) AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
También puede especificar la hora junto con la fecha:
SELECT CAST('2pm 20 Dec 2018' AS datetime) AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Ejemplo 3:convertir al tipo de datos datetime2
Aquí convertimos al datetime2 tipo de datos:
SELECT CAST('20 Dec 2018' AS datetime2) 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 CAST('20 Dec 2018' AS datetimeoffset) AS Result;
Resultado:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Ejemplo 5:convertir a tipo de datos smalldatetime
Aquí convertimos a smalldatetime tipo de datos:
SELECT CAST('20 Dec 2018' AS smalldatetime) 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 CAST('20 Dec 2018' AS time) 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 CAST('2pm' AS time) 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 CAST('2pm 20 Dec 2018' AS time) 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 CAST('2pm' AS datetime) AS Result;
Resultado:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Si prefiere usar para usar CONVERT()
función, vea esta cadena para fecha/hora CONVERT()
ejemplos usando los mismos ejemplos que arriba.
Además, como se mencionó, si obtiene un error al intentar convertir una cadena en una fecha, intente PARSE()
función en su lugar. Funcionará en algunos casos donde CAST()
no.