Я хочу вернуть все записи, которые были добавлены в базу данных за последние 30 дней. Мне нужно преобразовать дату в мм / дд / гг из-за целей отображения.
create_date between DATE_FORMAT(curdate(),'%m/%d/%Y') AND (DATE_FORMAT(curdate() - interval 30 day,'%m/%d/%Y'))
Моя инструкция не ограничивает записи последними 30 днями - она выбирает все записи.
Может кто-то указать мне верное направление? Такое ощущение, что я рядом.
Спасибо и удачной вам недели.
источник
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
возвращает строку, поэтому вы используете две строки в своемBETWEEN
предложении, что не будет работать так, как вы ожидаете.Вместо этого преобразуйте дату в свой формат в
SELECT
и выполнитеBETWEEN
для фактических дат. Например,источник
Вы также можете написать это в mysql -
ФИКСИРОВАННЫЙ
источник
Для активности на текущую дату и для полной активности за предыдущие 30 дней используйте это, поскольку SYSDATE является переменным в день, в предыдущий 30-й день не будет всех данных за этот день.
источник
Вот решение без использования
curdate()
функции, это решение для тех, кто использует,TSQL
я думаюисточник