MySQL Query-записи между сегодняшним днем и последними 30 днями
Я хочу вернуть все записи, которые были добавлены в базу данных в течение последних 30 дней. Мне нужно преобразовать дату в mm/dd / yy из-за целей отображения.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
мой оператор не может ограничить записи до последних 30 дней - он выбирает все записи.
может ли кто-нибудь указать мне в правильном направлении? Такое чувство, что я близко.
спасибо и иметь большую неделю.
6 ответов:
вам нужно подать заявку
DATE_FORMATнаSELECTпредложенииWHEREстатья:SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()также обратите внимание, что
CURDATE()возвращает толькоDATEчасть даты, так что если вы хранитеcreate_dateкакDATETIMEС заполненной частью времени этот запрос не будет выбирать сегодняшние записи.в этом случае, вам нужно использовать
NOWвместо:SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
SELECT * FROM < table_name > WHERE < date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();
DATE_FORMATвозвращает строку, так что вы используете две строки в свойBETWEENпредложение, которое не будет работать, как вы ожидаете.вместо этого преобразуйте дату в свой формат в
SELECTи неBETWEENдля настоящих свиданий. Например,SELECT DATE_FORMAT(create_date, '%m/%d/%y') as create_date_formatted FROM table WHERE create_date BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()
вы также можете написать это в MySQL -
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date < DATE_ADD(NOW(), INTERVAL +1 MONTH);
для текущей даты активности и полной активности за предыдущие 30 дней используйте это, так как SYSDATE является переменной в день предыдущий 30-й день не будет иметь все данные за этот день.
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND SYSDATE()
Comments