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.

È stato utile?

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