Como posso comparar um tempo de época contra 24 horas em SQL Server?
-
05-07-2019 - |
Pergunta
Estou usando o MS SQL Server 2005, não tenho datas armazenadas em tempo de época (início 1970) eu preciso criar uma instrução que irá afectar qualquer registro que não tenha sido atualizado nos últimos 24 horas.
Solução
Para obter a data e hora atual em formato de época, o uso ( via ):
SELECT DATEDIFF(s,'19700101 05:00:00:000',GETUTCDATE())
Para obter o tempo de época para agora - 24 horas de uso:
SELECT DATEDIFF(s,'19700101 05:00:00:000', DATEADD(DAY, -1, GETUTCDATE()))
Então, você poderia fazer:
DECLARE @24_hours_ago AS INT
SELECT @24_hours_ago = DATEDIFF(s,'19700101 05:00:00:000', DATEADD(DAY, -1, GETUTCDATE()))
UPDATE table SET col = value WHERE last_updated < @24_hours_ago
Outras dicas
Você pode converter de SQL Server DateTime em tempos Epoch calculando o número de segundos que se passaram desde 01 de janeiro de 1970, como esta.
Select DateDiff(Second, '19700101', GetDate())
Para obter linhas a partir do último 24 horas ....
Select Columns
From Table
Where EpochColumn Between DateDiff(Second, '19700101', GetDate()) And DateDiff(Second, '19700101, GetDate()-1)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow