MySQL функции даты - PullRequest
       10

MySQL функции даты

0 голосов
/ 03 февраля 2012

У меня есть поле даты в таблице базы данных этого формата. 2012-02-1.i мне нужно написать 3 разных запроса:

a.) Мне нужно получить все поля, где дата находится между сегодняшним днем ​​ипредыдущие 5 дней.
b.) Мне нужно получить все поля, где дата старше 5 дней с сегодняшней даты.
c.) Мне нужно получить все поля, где дата находится в диапазоне от 5 дней назад до 30дней назад '

Могу ли я использовать некоторую встроенную функцию mysql.

Управление запросом ниже:

SELECT fields 
FROM table 
WHERE date >= CURDATE() - 5

или что-то подобное

Или использованиемежду пунктом.Я не получаю правильный синтаксис.

SELECT p.status,p.downpayment_date,p.policy_id,i.id,i.policy_type,i.carrier,i.policy_nu‌​mber,i.client_id,c.id,c.client_name FROM pdp_payment AS p,pdp_policy_info AS i,pdp_client_info AS c WHERE p.policy_id=i.id AND i.client_id=c.id AND (((p.status='close pending') OR (p.status='Cancel')) AND (p.downpayment_date BETWEEN ((INTERVAL 5 DAY AND CURDATE()) - (INTERVAL 30 DAY AND CURDATE()))) )

Ответы [ 3 ]

0 голосов
/ 03 февраля 2012

Дата между сегодняшним днем ​​и предыдущими 5 днями.

SELECT  fields FROM table
WHERE date_field BETWEEN CURRENT_DATE - INTERVAL 5 DAY AND CURRENT_DATE

Дата меньше предыдущих 5 дней.

SELECT  fields FROM table
WHERE date_field < CURRENT_DATE - INTERVAL 5 DAY
0 голосов
/ 03 февраля 2012

date является ключевым словом, поэтому при использовании его в качестве имени поля оно ДОЛЖНО быть заключено в обратные кавычки ` в противном случае вы получите ошибку разбора.

Чтобы получить нужный диапазон:

WHERE `date` BETWEEN DATE_ADD(NOW(),INTERVAL -30 DAY) AND DATE_ADD(NOW(),INTERVAL -5 DAY)
0 голосов
/ 03 февраля 2012

Для всех полей, где дата находится между сегодняшним днем ​​и предыдущими 5 днями.


SELECT  fields
FROM table
WHERE your_date_field_name BETWEEN CURDATE() - INTERVAL 5 DAY AND CURDATE()

Другие проблемы можно решить аналогичным образом

...