Я хочу возвратить все записи, которые были добавлены к базе данных в течение прошлых 30 дней. Я должен преобразовать дату в mm/dd/yy из-за целей дисплея.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Моему оператору не удается ограничить записи на прошлые 30 дней - он выбирает все записи.
Кто-либо может указать на меня в правильном направлении? Такое чувство, что я близок.
Спасибо и имеет большую неделю.
Необходимо подать заявку DATE_FORMAT
в ВЫБОР
пункт, не ГДЕ
пункт:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
Также примечание, что CURDATE ()
возвраты только ДАТА
часть даты, поэтому если вы храните create_date
как ДАТА И ВРЕМЯ
с заполненной частью времени, этот запрос, не выберет сегодняшние записи.
В этом случае, необходимо будет использовать ТЕПЕРЬ
вместо этого:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y')
FROM mytable
WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
DATE_FORMAT
возвращает последовательность, таким образом, вы используете две последовательности в вашем МЕЖДУ
пункт, который не идет на работу, как вы ожидаете.
Вместо этого преобразуйте дату в свой формат в ВЫБОР
и сделайте МЕЖДУ
для фактических дат. Например,
SELECT DATE_FORMAT(create_date, '%m/%d/%y') as create_date_formatted
FROM table
WHERE create_date BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()
SELECT
*
FROM
< table_name >
WHERE
< date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY)
AND NOW();