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.

Foi útil?

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
scroll top