2016-12-23 2 views
1

В моем столе есть поле due_date. Я хочу получить записи, чья due_date на определенные дни раньше сегодняшнего дня, то есть разница due_date и CURDATE() может варьироваться от -1 до 7(в днях).Разница даты в mySQL на определенное количество дней

P.S .: -1 означает, что due_date был вчера.

SELECT * FROM table WHERE (due_date - CURDATE() = 7);

Спасибо заранее. :)

+0

Так что exac Это проблема? – Mureinik

+0

Этот синтаксис не работает –

+0

дайте мне имя таблицы. –

ответ

1

Используйте этот запрос, и это будет исправить вашу проблему

SELECT * 
FROM TABLENAME 
WHERE due_date >= DATE_ADD(curdate(),INTERVAL -1 DAY) 
AND due_date <= DATE_ADD(curdate(), INTERVAL 5 DAY); 
+1

вы можете изменить день в зависимости от вашего дня задержки .. –

+0

Но это не сработает для '-1', то есть' due_date' был 'вчера' –

+0

Позвольте мне исправить это –

0

Вы можете использовать DATEDIFF

SELECT DATEDIFF('2014-11-30','2014-11-29') AS DiffDate 

http://www.w3schools.com/SQl/func_datediff_mysql.asp

+0

'SQLSTATE [42000]: Ошибка синтаксиса или нарушение прав доступа –

+0

Можете ли вы показать мне запрос? –

+0

Я пробовал это: 'SELECT * FROM table WHERE DATEDIFF (due_date- CURDATE()> = -1) И DATEDIFF (due_date- CURDATE() <8)' –

0

попробовать этот запрос:

SELECT * FROM table WHERE DATEDIFF(due_date, NOW()) <= 7 and DATEDIFF(due_date, NOW()) >= -1; 
+0

В нем написано: 'Синтаксическая ошибка или нарушение прав доступа: 1305 FUNCTION tablename.date_diff не существует' –

+0

измените таблицу на имя вашей таблицы. –

Смежные вопросы