2011-11-10 14 views
50

W moim zapytaniu SQL, w jaki sposób mogę je znaleźć w ciągu ostatnich 24 godzin? NpZnajdź rekordy z polem daty w ciągu ostatnich 24 godzin

SELECT * FROM news WHERE date < 24 hours 

I zazwyczaj to zrobić przez ustawienie zmiennej na bieżąco() - 1 dzień i porównując ją do tego, ale zastanawiałem się, czy sposób zapytań SQL był szybszy?

+2

której bazy danych używasz? –

+0

MySQL. Zaktualizowano: D – user1022585

Odpowiedz

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

Potrzebujesz "> 'NIE' <' –

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

Nieważne, widzę, że dodałeś, że używasz MySQL zamiast SQL Servera. Mimo to odpowiedź może pomóc komuś innemu :) – Simon

+0

taa, to mi pomoże bro :) –

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

Czy można to zrobić: GDZIE SomeDate> Now() -1? –

+2

@Andrew: Myślę, że to "24 GODZINA", a nie "24 GODZINY". –

+0

@Ypercube - tak, poprawione. – Andrew

92

wystarczy wybrać daty, które są wyższe niż aktualny czas minus 1 dzień.

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

Jest tak wiele sposobów na zrobienie tego. Wymienione te działają świetnie, ale tu jest inny sposób, jeśli masz pole datetime:

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

timediff() zwraca obiekt czasu, więc nie popełnia błąd porównując ją do 86400 (liczba sekund w ciągu dnia) lub twoje wyniki będą wszelkiego rodzaju złe.

+1

Możesz użyć

1

check:

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