У меня есть столбец даты, который представляет день рождения пользователя, но год не используется (чтобы избежать данных о возрасте, которые могут быть чувствительны для некоторых пользователей :)). Мне нужно сравнить его с другим столбцом, чтобы узнать, завершил ли пользователь обучение с момента последнего появления последнего дня своего месяца рождения.Как я могу выбрать последний день месяца в течение ближайшего месяца в течение определенного месяца?
Иными словами, если training_date
происходит после последнего дня месяца последнего наступления их месяца рождения в прошлом. Для этого вопроса предположим, что столбец дня рождения называется birthday
.
where `training`.`date_training` BETWEEN MAKEDATE(Year(CURDATE()) -1,dayofyear(`user`.`birthdate`)) AND MAKEDATE(Year(CURDATE()) -1,dayofyear(`user`.`birthdate`));
Edit: birthday
хранится с произвольным годом, в настоящее время неофициального правило бизнеса является использование года рекорд был введен.
вы можете добавить запрос, который вы пробовали? – Slowcoder
Я не придумал ничего, что даже скомпилирует! Это всего лишь часть предложения where в сложном коррелированном подзапросе на диалекте, который не является моей областью знаний, извините:/ –
Я рассмотрел вопрос о выборе последней даты месяца рождения этого года и предыдущего, а затем сравнения их на текущую дату, но мне сложно определить правильные функции даты/времени в MySQL. Является ли last_day способ пойти? @Jodrell, похоже, не так думает ... –