Pregunta

Estoy utilizando MS SQL Server 2005, tengo fechas almacenadas en la época (a partir de 1970). Necesito crear una declaración que afectará a cualquier registro que no se haya actualizado en las últimas 24 horas.

¿Fue útil?

Solución

Para obtener la fecha y hora actual en formato de época, utilice ( a través de ):

SELECT DATEDIFF(s,'19700101 05:00:00:000',GETUTCDATE())

Para obtener el tiempo de la época por ahora, use las 24 horas:

SELECT DATEDIFF(s,'19700101 05:00:00:000', DATEADD(DAY, -1, GETUTCDATE()))

Entonces, podrías hacer:

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

Otros consejos

Puedes convertir de SQL Server DateTime a Epoch time calculando la cantidad de segundos que han transcurrido desde el 1 de enero de 1970, como este.

Seleccione DateDiff (Segundo, '19700101', GetDate ())

Para obtener filas de las últimas 24 horas ....

Select Columns
From   Table
Where  EpochColumn Between DateDiff(Second, '19700101', GetDate()) And DateDiff(Second, '19700101, GetDate()-1)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top