Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Alterar o formato de data padrão armazenado em um banco de dados


Esse é o cerne da confusão. Só porque o SQL Server Management Studio exibe uma coluna de data e hora nesse formato não significa que ela está armazenada COMO TEXTO AAAA-MM-DD hh:mm:ss.zzz. Ele é armazenado como binário, algo como 0000101000001010..

Suas datas são armazenadas no SQL Server como uma série de bytes (na verdade bits) que compõem algum valor numérico que é um deslocamento de 1900-01-01. Não existe um formato inerente às datas. O que você está se referindo é que o SSMS, por padrão, mostra [exibir] colunas de data e hora como AAAA-MM-DD hh:mm:ss.zzz. Se você usa uma ferramenta de programação de front-end, isso também pode impor um formato padrão de [exibição], a menos que você tenha solicitado outro.

Não há absolutamente nenhuma maneira de fazer o SSMS mostrar dados de data e hora em outro formato por meio de opções ou configuração. Se necessário, você teria que atualizar a consulta SQL para converter a coluna de data e hora em uma coluna VARCHAR contendo o equivalente TEXTual em um formato específico. Isso pode ser útil no SSMS, mas seria ruim quando usado como fonte de dados para aplicativos GUI/web front-end - já que os valores não são data e hora e não podem ser usados ​​para cálculo de intervalo, gráficos, controles vinculados a data etc.

Veja este exemplo de exibição de hora (getdate()) como YYYY-DD-MM, um formato muito incomum. Observe que o campo/variável de data deve ser usado duas vezes:
select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))