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

Cómo cambiar los formatos de fecha y hora en T-SQL

Problema:

Le gustaría cambiar el formato de un campo de fecha o valor en una base de datos de SQL Server.

Ejemplo:

Nuestra base de datos tiene una tabla llamada Patient con datos en las columnas Id , FirstName , LastName y RegistrationDate .

Id Nombre Apellido Fecha de registro
1 Jane Williams 2019-06-20
2 Gabriel Marrón 2019-02-02
3 Lora Folk 2016-11-05

Cambiemos el formato de la fecha de registro de cada paciente. Pondremos primero el nombre del día de la semana, seguido del día y el nombre del mes y un año de 4 dígitos (por ejemplo, "Viernes, 27 de diciembre de 2019").

Solución:

Usaremos la función FORMAT() para cambiar el formato de la fecha en RegistrationDate columna.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy')
          AS FormattedRegistrationDate
FROM Patient;

Este es el resultado de la consulta:

Nombre Apellido Fecha de registro formateada
Jane Williams jueves, 20 junio, 2019
Gabriel Marrón sábado, 2 de febrero de 2019
Lora Folk Sábado, 5 de noviembre de 2016

Discusión:

Podemos cambiar cómo se muestra una fecha dada con la función FORMAT(). Esta función toma dos argumentos obligatorios y un argumento opcional. En nuestro ejemplo, usamos solo los dos argumentos obligatorios. La primera es una fecha, que puede ser de una columna de fecha/hora/fechahora o cualquier expresión que devuelva una fecha u hora. (En nuestro ejemplo, usamos la columna RegistrationDate .) El segundo argumento es una cadena que contiene el nuevo formato de fecha. En nuestro ejemplo, usamos 'dddd, dd MMMM, yyyy' :

  • dddd – El nombre del día de la semana.
  • d – El día del mes, del 1 al 31.
  • MMMM – El nombre completo del mes.
  • aaaa – El año de cuatro dígitos.

La siguiente tabla presenta más especificadores de formato de fecha/hora:

especificador descripción
d Día en el rango 1-31
dd Día en el rango 01-31
ddd El nombre abreviado del día de la semana
dddd El nombre completo del día de la semana
M Mes del 1 al 12
MM Mes del 01 al 12
MMM El nombre abreviado del mes
MMMM El nombre completo del mes
y año de 2 dígitos, de 0 a 99
aa año de 2 dígitos de 00 a 99
aaaa año de 4 dígitos
g Era (p. ej., d.C.)
h Hora de 1 a 12 (reloj de 12 horas)
hh Hora de 01 a 12 (reloj de 12 horas)
H Hora de 0 a 23 (reloj de 24 horas)
HH Hora de 00 a 23 (reloj de 24 horas)
m Minuto de 0 a 59
mm Minuto de 00 a 59
s Segundo de 0 a 59
ss Segundo de 00 a 59
t Primer carácter de AM o PM (por ejemplo, 9A, 5P)
tt AM o PM
z Compensación de horas, sin cero inicial (por ejemplo, +3)
zz Compensación de horas, con cero inicial (por ejemplo, +03)

Puede obtener más información en la documentación de Microsoft sobre formatos de fecha y hora estándar y formatos personalizados.

Si desea formatear esta fecha para un idioma o país específico, use el tercer argumento opcional:cultura . Este argumento es una cadena que contiene el código cultural de una región o país en particular. (Los códigos culturales se componen de un código de idioma, un guión y un código de país). En el siguiente ejemplo, usamos el código cultural de Alemania, que combina el código de idioma alemán ('de') con el código de país de Alemania. ('DE'), es decir, 'de-DE'. La fecha resultante se muestra en alemán y tiene el formato que la audiencia alemana esperaría ver.

SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE')
          AS FormattedRegistrationDate
FROM Patient;

Este es el resultado de esta consulta:

Nombre Apellido Fecha de registro
Jane Williams Donnerstag, 20 de junio de 2019
Gabriel Marrón Samstag, 2 de febrero de 2019
Lora Folk Samstag, 5 de noviembre de 2016