sql >> Base de Datos >  >> RDS >> Database

Cómo formatear una fecha en T-SQL

Problema:

Le gustaría mostrar un valor de fecha en otro formato en SQL Server.

Ejemplo:

Nuestra base de datos tiene una tabla llamada company con datos en las columnas id (clave principal), nombre y fecha_de_inicio .

id nombre fecha_inicio
1 Banco Lisa 2019-01-20
2 Instituto Financiero de Crédito 2018-03-14
3 Patrimonio de Williams 2019-10-28

Para cada empresa, vamos a convertir su fecha de inicio a un nuevo formato, 'YYYY/MM/DD', donde YYYY es un año de 4 dígitos, MM es un mes de 2 dígitos y DD es un día de 2 dígitos.

Solución 1:

Usaremos el CONVERT() función. Esta es la consulta que escribirías:

SELECT 
  CONVERT(NVARCHAR, start_date, 111 ) AS new_date
FROM company;

Aquí está el resultado:

nombre fecha_inicio
Banco Lisa 2019/01/20
Instituto Financiero de Crédito 2018/03/14
Williams Holding 2019/10/28

Discusión:

Usa el CONVERT() función para cambiar el formato de una fecha de una columna o expresión determinada.

Esta función toma tres argumentos:

  1. El nuevo tipo de datos (en nuestro ejemplo, NVARCHAR).
  2. Una expresión o nombre de columna que contiene la fecha a formatear (en nuestro ejemplo, start_date columna).
  3. Un código de estilo opcional, como un número entero. (En nuestro ejemplo, el estilo '111' muestra la fecha usando barras para separar las partes).

La siguiente tabla presenta los códigos de estilo de fecha más populares:

código descripción
101 30/11/2019
102 2019.11.30
103 30/11/2019
104 30.11.2019
105 30-11-2019
110 30-11-2019
111 2019/11/30

Puede encontrar una lista completa de estilos de formato en la documentación de T-SQL.

La consulta anterior cambió el formato de la fecha de Lisa Bank 2019-01-20 a una cadena que contiene la fecha '2019/01/20'.

Solución 2:

En SQL Server 2012 y versiones posteriores, puede usar FORMAT() función para cambiar los formatos de fecha/hora. Utiliza los caracteres a continuación para especificar el formato deseado:

patrón descripción
dd día en el rango 01-31
MM mes en el rango 01-12
aa año de 2 dígitos
aaaa año de 4 dígitos
HH hora en el rango 00-23
mm minutos en el rango 00-59
ss segundos en el rango 00-59

Esta es la consulta que escribirías usando FORMAT():

SELECT 
  FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date
FROM company;

El primer argumento es el valor de fecha y hora/fecha/hora para reformatear. El segundo es una cadena que contiene el patrón del nuevo formato. Esta función devuelve un tipo de datos NVARCHAR. Utilice FORMAT() si trabaja en SQL Server 2012 o posterior y desea convertir fechas/horas en cadenas que contengan las fechas/horas formateadas.