No meu banco de dados SQL Server, tenho uma datetime
coluna.
Qual é uma boa maneira de criar uma nova coluna que representa o long
valor da datetime
coluna? O long
representaria um número de segundos.
Eu pensei que se eu pudesse convertê-lo para longs
, seria mais fácil agrupar por consultas ao longo de períodos de tempo, pois eu poderia simplesmente dividir o número longo por valores fixos.
A tabela é estática, não atualizará ou excluirá dados.
Crie uma nova coluna (ALTER TABLE) e execute um UPDATE nela
19000101
é a época do SQL Server. Você pode usar19700101
para o Unix epoch, por exemploVocê pode adicionar uma nova coluna e atualizá-la manualmente como sugerido pelo @gbn, mas agora você precisa manter essa coluna constantemente atualizada com gatilhos de inserção/atualização ou algum outro mecanismo. Tomando emprestado as suposições do @gbn sobre os nomes das tabelas/colunas, aqui estão algumas abordagens diferentes que não requerem manutenção constante.
Coluna Calculada
Você também pode persistir e indexar esta coluna, trocando o desempenho da consulta pelo armazenamento, mas precisará fazer uma pequena alteração no cálculo (tentar persistir o acima resultará em um erro sobre a computação não ser determinística):
Você deseja persistir a coluna se estiver mais preocupado com o desempenho de leitura do que com o desempenho de gravação (ou armazenamento).
Visão
Um benefício de uma exibição sobre uma nova coluna é que você não precisa alterar o esquema da tabela base (ou se preocupar em mantê-lo atualizado). Você paga o custo do cálculo no momento da consulta, que é o mesmo que uma coluna computada não persistente.
Tempo de execução
Como os cálculos acima não são muito complexos, basta incluir o cálculo em sua consulta. Espero que você esteja usando procedimentos armazenados para acesso a dados para não repetir isso com frequência.