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 |