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

Como formatar uma data em T-SQL

Problema:


Você gostaria de exibir um valor de data em outro formato no SQL Server.

Exemplo:


Nosso banco de dados tem uma tabela chamada company com dados nas colunas id (chave primária), nome e data_inicial .
id nome data_inicial
1 Lisa Banco 20-01-2019
2 Instituto Financeiro de Crédito 2018-03-14
3 Williams Holding 28-10-2019

Para cada empresa, vamos converter a data de início para um novo formato, 'AAAA/MM/DD', onde AAAA é um ano de 4 dígitos, MM é um mês de 2 dígitos e DD é um dia de 2 dígitos.

Solução 1:


Usaremos o CONVERT() função. Aqui está a consulta que você escreveria:
SELECT 
  CONVERT(NVARCHAR, start_date, 111 ) AS new_date
FROM company;

Aqui está o resultado:
nome data_inicial
Lisa Banco 20/01/2019
Instituto Financeiro de Crédito 2018/03/14
Williams Holding 28/10/2019

Discussão:


Use o CONVERT() função para alterar o formato de uma data de uma determinada coluna ou expressão.

Esta função recebe três argumentos:
  1. O novo tipo de dados (no nosso exemplo, NVARCHAR).
  2. Uma expressão ou nome de coluna contendo a data a ser formatada (no nosso exemplo, o start_date coluna).
  3. Um código de estilo opcional, como um número inteiro. (Em nosso exemplo, o estilo '111' exibe a data usando barras para separar as partes.)

A tabela abaixo apresenta os códigos de estilo de data mais populares:
código descrição
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

Uma lista abrangente de estilos de formato pode ser encontrada na documentação do T-SQL.

A consulta acima alterou o formato da data do Lisa Bank 2019-01-20 para uma string contendo a data '2019/01/20'.

Solução 2:


No SQL Server 2012 e posterior, você pode usar o FORMAT() função para alterar os formatos de data/hora. Você usa os caracteres abaixo para especificar o formato desejado:
padrão descrição
dd dia no intervalo 01-31
MM mês no intervalo 01-12
aa ano de 2 dígitos
aaaa ano de 4 dígitos
HH hora no intervalo 00-23
mm minutos no intervalo 00-59
ss segundos no intervalo 00-59

Aqui está a consulta que você escreveria usando FORMAT():
SELECT 
  FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date
FROM company;

O primeiro argumento é o valor datetime/date/time para reformatar. A segunda é uma string contendo o padrão do novo formato. Esta função retorna um tipo de dados NVARCHAR. Use FORMAT() se você trabalha no SQL Server 2012 ou posterior e deseja converter datas/horas em strings contendo as datas/horas formatadas.