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

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

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 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 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.