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 дней - он выбирает все записи.

Кто-либо может указать на меня в правильном направлении? Такое чувство, что я близок.

Спасибо и имеет большую неделю.

112
задан Vldb.User 5 March 2015 в 20:36
поделиться

3 ответа

Необходимо подать заявку 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()
262
ответ дан 24 November 2019 в 02:45
поделиться

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()
10
ответ дан 24 November 2019 в 02:45
поделиться
SELECT
    *
FROM
    < table_name >
WHERE
    < date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY)
AND NOW();
54
ответ дан 24 November 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: