Come faccio a confrontare un tempo di epoca con 24 ore fa in SQL Server?
-
05-07-2019 - |
Domanda
Sto utilizzando MS SQL Server 2005, ho delle date memorizzate in epoche (a partire dal 1970). Devo creare un'istruzione che influirà su tutti i record che non sono stati aggiornati nelle ultime 24 ore.
Soluzione
Per ottenere il datetime corrente in formato epoca, utilizzare ( via ):
SELECT DATEDIFF(s,'19700101 05:00:00:000',GETUTCDATE())
Per ottenere il tempo per ora - 24 ore usare:
SELECT DATEDIFF(s,'19700101 05:00:00:000', DATEADD(DAY, -1, GETUTCDATE()))
Quindi, potresti fare:
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
Altri suggerimenti
Puoi convertire da SQL Server DateTime a tempo di epoca calcolando il numero di secondi trascorsi dal 1 gennaio 1970, in questo modo.
Seleziona DateDiff (Second, '19700101', GetDate ())
Per ottenere righe dalle ultime 24 ore ....
Select Columns
From Table
Where EpochColumn Between DateDiff(Second, '19700101', GetDate()) And DateDiff(Second, '19700101, GetDate()-1)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow