2011-11-10 13 views
50

En mi consulta SQL, ¿cómo hago que encuentre los registros en las últimas 24 horas? Por ejemplo Buscar registros con un campo de fecha en las últimas 24 horas

SELECT * FROM news WHERE date < 24 hours 

que suele hacer mediante el establecimiento de una variable hasta la fecha() - 1 día y comparándolo con eso, pero me preguntaba si la forma de consulta SQL fue más rápido?

+2

Qué base de datos está utilizando? –

+0

MySQL. Actualizado: D – user1022585

Respuesta

-3
SELECT * FROM news WHERE date < DATEADD(Day, -1, date) 
+0

Necesita '>' NO '' ' –

2
SELECT * FROM news WHERE date > DATEADD(d,-1,GETDATE()) 
+1

No importa, veo que ha agregado que es MySQL lo que está utilizando en lugar de SQL Server. Aún así, la respuesta podría ayudar a alguien más :) – Simon

+0

Sí, me ayuda, hermano :) –

52
SELECT * FROM news WHERE date > DATE_SUB(NOW(), INTERVAL 24 HOUR) 
+0

¿Es posible hacer esto: DÓNDE SomeDate> Now() -1? –

+2

@Andrew: creo que es '24 HORAS', no' 24 HORAS'. –

+0

@Ypercube - sí, corregido. – Andrew

92

simplemente seleccione las fechas que son superiores a la hora actual menos 1 día.

SELECT * FROM news WHERE date >= now() - INTERVAL 1 DAY; 
0

Hay muchas formas de hacerlo. Los listados cuáles funcionan muy bien, pero aquí hay otra manera si usted tiene un campo de fecha y hora:

SELECT [fields] 
FROM [table] 
WHERE timediff(now(), my_datetime_field) < '24:00:00' 

timediff() devuelve un objeto de tiempo, por lo que no cometer el error de compararla con 86400 (número de segundos en un día) , o su resultado será todo tipo de error.

+1

Es posible que desee utilizar

1

cheque:

SELECT * from [table_name] WHERE date > (NOW() - INTERVAL 24 HOUR). 
4
SELECT * from new WHERE date < DATE_ADD(now(),interval -1 day); 
Cuestiones relacionadas