Database
 sql >> Base de Dados >  >> RDS >> Database

Como alterar os formatos de data e hora no T-SQL

Problema:


Você gostaria de alterar o formato de um campo de data ou valor em um banco de dados SQL Server.

Exemplo:


Nosso banco de dados tem uma tabela chamada Patient com dados nas colunas Id , FirstName , LastName e RegistrationDate .
Id Nome Sobrenome Data de registro
1 Jane Williams 20-06-2019
2 Gabriel Marrom 2019-02-02
3 Lora Gente 2016-11-05

Vamos alterar o formato da data de registro de cada paciente. Colocaremos primeiro o nome do dia da semana, seguido do dia do mês e do nome e um ano de 4 dígitos (por exemplo, "Sexta-feira, 27 de dezembro de 2019").

Solução:


Usaremos a função FORMAT() para alterar o formato da data no RegistrationDate coluna.
SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy')
          AS FormattedRegistrationDate
FROM Patient;

Segue o resultado da consulta:
Nome Sobrenome FormattedRegistrationDate
Jane Williams Quinta-feira, 20 de junho de 2019
Gabriel Marrom Sábado, 2 de fevereiro de 2019
Lora Gente Sábado, 5 de novembro de 2016

Discussão:


Podemos alterar como uma determinada data é exibida com a função FORMAT(). Esta função recebe dois argumentos obrigatórios e um argumento opcional. Em nosso exemplo, usamos apenas os dois argumentos obrigatórios. A primeira é uma data, que pode ser de uma coluna data/hora/datahora ou qualquer expressão que retorne uma data ou hora. (No nosso exemplo, usamos a coluna RegistrationDate .) O segundo argumento é uma string contendo o novo formato de data. Em nosso exemplo, usamos 'dddd, dd MMMM, aaaa' :
  • dddd – O nome do dia da semana.
  • d – O dia do mês, de 1 a 31.
  • MMMM – O nome completo do mês.
  • aaaa – O ano de quatro dígitos.

A tabela abaixo apresenta mais especificadores de formato de data/hora:
especificador descrição
d Dia no intervalo de 1 a 31
dd Dia no intervalo de 01 a 31
dd O nome abreviado do dia da semana
dddd O nome completo do dia da semana
M Mês de 1 a 12
MM Mês de 01 a 12
MMM O nome abreviado do mês
MMMM O nome completo do mês
s ano de 2 dígitos, de 0 a 99
aa ano de 2 dígitos de 00 a 99
aaaa ano de 4 dígitos
g Era (por exemplo, A.D.)
h Hora de 1 a 12 (relógio de 12 horas)
hh Hora de 01 a 12 (relógio de 12 horas)
H Hora de 0 a 23 (relógio de 24 horas)
HH Hora de 00 a 23 (relógio 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 Primeiro caractere de AM ou PM (por exemplo, 9A, 5P)
tt AM ou PM
z Deslocamento de horas, sem zero à esquerda (por exemplo, +3)
zz Deslocamento de horas, com zero à esquerda (por exemplo, +03)

Você pode saber mais na documentação da Microsoft para formatos de data e hora padrão e formatos personalizados.

Se você quiser formatar esta data para um idioma e/ou país específico, use o terceiro argumento opcional:cultura . Esse argumento é uma string que contém o código de cultura de uma região ou país específico. (Os códigos de cultura são compostos por um código de idioma, um traço e um código de país.) No exemplo abaixo, usamos o código de cultura para a Alemanha, que combina o código do idioma alemão ('de') com o código do país para a Alemanha ('DE'), ou seja, 'de-DE'. A data resultante é exibida em alemão e formatada como um público alemão esperaria vê-la.
SELECT  FirstName,
        LastName,
        FORMAT(RegistrationDate ,'dddd, d MMMM, yyyy', 'de-DE')
          AS FormattedRegistrationDate
FROM Patient;

Aqui está o resultado desta consulta:
Nome Sobrenome Data de registro
Jane Williams Donnerstag, 20 de junho de 2019
Gabriel Marrom Samstag, 2 de fevereiro de 2019
Lora Gente Samstag, 5 de novembro de 2016