¿Cómo comparo un tiempo de época con las 24 horas de SQL Server?
-
05-07-2019 - |
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.
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