mysql — конвертирует функции VB Date () и DateAdd в переполнение стека

У меня есть простая функция VBA, которая показывает записи с текущей даты и все, что за 21 дней.

WHERE date_added between Date() and DateAdd('d', -21, Date())

Как я могу получить тот же эффект, используя PHP и MySQL?

Когда я запускаю код выше, я получаю эту ошибку:

«У вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с ‘) и DateAdd (‘ d ‘, -21, Date ())’ в строке 1″

-2

Решение

На диалекте MySQL вы хотите

WHERE date_added BETWEEN CURDATE() - INTERVAL 21 DAY
AND CURDATE()

Обратите внимание, что это работает правильно, только если date_added является типом данных DATE. Если он имеет временную составляющую, которую вы хотите

WHERE date_added >= CURDATE() - INTERVAL 21 DAY
AND date_added <  CURDATE() + INTERVAL 1 DAY
2

Другие решения

Других решений пока нет …