2009-11-11 3 views
53

Я играл с MYSQL, и я знаю, что есть команда limit, которая показывает определенное количество результатов, но мне было интересно, может ли только MySQL показывать только последние 3 дня или что-то в этом роде. Просто интересуюсь.MySQL SELECT последние несколько дней?

Обновление: Я использовал СЕЙЧАС() для хранения времени.

+0

@Doug, пожалуйста, дайте нам немного больше информации. Как записывается время записи DATETIME, DATE, TIMESTAMP, временные метки времени и т. Д.? Вы хотите последние три дня (CURRENT_DATE() - INTERVAL 3 DAYS) или из самой последней записи? И т. Д. – pilcrow

ответ

115

Используйте для даты три дня назад:

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL -3 DAY); 

Проверьте документацию DATE_ADD.

Или вы можете использовать:

WHERE t.date >= (CURDATE() - INTERVAL 3 DAY) 
+3

«ГДЕ t.date> = (CURDATE() - INTERVAL 3 DAY)» должно быть достаточно –

+0

ОЧЕНЬ ИНТЕРЕСНО! Я попытался запустить это с DATE_ADD, и он продолжал сбой из-за синтаксиса. Однако он работал без DATE_ADD, поэтому я использовал только 'CURDATE() - INTERVAL 3 DAY'. Почему это? – Strawberry

+1

Я запускал его через phpmyadmin, если это имеет значение. – Strawberry

2

Для этого вы можете использовать комбинацию функции UNIX_TIMESTAMP().

SELECT ... FROM ... WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(thefield) < 259200 
+1

@ Турник, осторожность, дни не всегда состоят из 86 400 секунд, что с секунд прыжка и дневного сбережения. – pilcrow

+0

Правда. Но это редкость, что вам нужен этот уровень точности, и это не похоже на исходный вопрос. – Turnor

+0

@pilcrow Помня об этом, как бы вы подошли к вопросу? –

-2

WHERE t.date >= DATE_ADD(CURDATE(), INTERVAL '-3' DAY);

использовать кавычки на -3 значение

9

Вы можете использовать это в MySQL ИНЕКЕ возвращать записи, которые были созданы в течение последних 7 дней в неделю:

created >= DATE_SUB(CURDATE(),INTERVAL 7 day)

Также используйте NOW() для вычитания, чтобы получить разрешение hh: mm: ss. Таким образом, чтобы вернуть записи, созданные именно (на второй) в течение последних 24 часов, вы можете сделать:

created >= DATE_SUB(NOW(),INTERVAL 1 day)

-2
SELECT DATEDIFF(NOW(),pickup_date) AS noofday 
FROM cir_order 
WHERE DATEDIFF(NOW(),pickup_date)>2; 

или

SELECT * 
FROM cir_order 
WHERE cir_order.`cir_date` >= DATE_ADD(CURDATE(), INTERVAL -10 DAY) 
Смежные вопросы