Qual seria o melhor para armazenar data + hora + fuso horário no SQL? eu não preciso de uma precisão maior (minutos, segundos, ms..) o principal motivo para isso é reduzir o uso de memória e o tempo de cálculo em grandes conjuntos de dados. ou isso não deveria ser uma preocupação?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
No SQL Server, sempre armazene datas usando um tipo de dados datetime, datetimeoffset ou datetime2. Armazená-los como qualquer outra coisa invariavelmente resulta em gasto desnecessário de CPU convertendo a coluna em algum tipo de data.
A possível exceção a isso pode ser se você quiser armazenar apenas o ano, que pode ser um número inteiro minúsculo. No entanto, como você precisa de precisão de hora e fuso horário, use o tipo de dados datetimeoffset . datetimeoffset(0) fornecerá precisão até o segundo, o que você não precisa, no entanto, você terá a garantia de nunca ter uma data inválida armazenada e saberá que os dados são compatíveis com o fuso horário.
datetimeoffset(0) ocupa 8 bytes, a menos que você esteja armazenando muitas datas na memória, isso não deve ser considerado um desperdício devido às vantagens conferidas pelo uso do tipo de dados correto.
Você pode estar interessado em ler esta resposta , que fala sobre alguns problemas comuns ao armazenar dados de data/hora incorretamente.