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:
- El nuevo tipo de datos (en nuestro ejemplo, NVARCHAR).
- Una expresión o nombre de columna que contiene la fecha a formatear (en nuestro ejemplo,
start_date
columna). - 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.