Cuando usa SQL Server, puede convertir un valor de fecha/hora en una cadena usando CONVERT()
función. Esta función le permite convertir entre diferentes tipos de datos.
En este artículo, convertiremos entre varios tipos de datos de fecha/hora a un varchar
o nvarchar
cadena.
Una de las cosas buenas de esta función es que le permite especificar el estilo en el que se devolverá la fecha. Por ejemplo, puede especificar si se devolverá como mm/dd/yyyy , aaaa.mm.dd , Lun dd, aaaa , etc. También puede especificar si se devuelve el componente de tiempo y cómo se le da estilo.
Sintaxis
Primero, así es como funciona la sintaxis oficial:
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 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
. 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 básico
En este ejemplo, declaramos una variable y asignamos un valor de GETDATE()
función. Luego devolvemos el valor y también convertimos ese valor a varchar
y devolver eso:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Resultado:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
La longitud predeterminada del tipo de datos de retorno es 30
, así que aunque solo especificamos varchar
, devolverá el resultado como varchar(30)
.
En este ejemplo, no proporcionamos un tercer argumento para indicar el estilo en el que queremos que se devuelva. Por lo tanto, se ha convertido usando el estilo predeterminado para datetime y pequeña fecha y hora tipos de datos, que es 0
o 100
(más sobre estilos a continuación).
Especificar un estilo
Puede utilizar un tercer argumento para especificar el estilo que adoptará el valor devuelto:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Resultado:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
En este ejemplo, especificamos un estilo de 102
, que es el estándar ANSI para mostrar una fecha con un componente de año de cuatro dígitos.
Para cambiar esto a un formato ANSI con un año de dos dígitos, podemos usar un estilo de 2
:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Resultado:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Puede ver más ejemplos en CONVERT() de fecha/hora a ejemplos de cadena en SQL Server.