2013-11-08 3 views
1

У меня есть столбец даты, который представляет день рождения пользователя, но год не используется (чтобы избежать данных о возрасте, которые могут быть чувствительны для некоторых пользователей :)). Мне нужно сравнить его с другим столбцом, чтобы узнать, завершил ли пользователь обучение с момента последнего появления последнего дня своего месяца рождения.Как я могу выбрать последний день месяца в течение ближайшего месяца в течение определенного месяца?

Иными словами, если 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 хранится с произвольным годом, в настоящее время неофициального правило бизнеса является использование года рекорд был введен.

+0

вы можете добавить запрос, который вы пробовали? – Slowcoder

+0

Я не придумал ничего, что даже скомпилирует! Это всего лишь часть предложения where в сложном коррелированном подзапросе на диалекте, который не является моей областью знаний, извините:/ –

+0

Я рассмотрел вопрос о выборе последней даты месяца рождения этого года и предыдущего, а затем сравнения их на текущую дату, но мне сложно определить правильные функции даты/времени в MySQL. Является ли last_day способ пойти? @Jodrell, похоже, не так думает ... –

ответ

1

если год считается

(YEAR(training_date) > YEAR(birthday)) || ((YEAR(training_date) = YEAR(birthday)) && (MONTH(training_date) > MONTH(birthday)))` 

еще, если только месяц,

MONTH(training_date) > MONTH(birthday) 
+0

Вам нужно знать, будет ли в прошлом году или в этом году в зависимости от того, произошел ли день рождения в этом году. – Jodrell

+0

Да, вы абсолютно правы. Я все еще не понимаю, как день рождения. Поэтому я предоставил оба варианта в зависимости от возможностей. – Slowcoder

+0

Привет, я добавил больше контента, надеюсь, это более понятно –

Смежные вопросы