如何选择特定月份最近一个月的最后一天?

时间:2013-11-08 16:15:06

标签: mysql sql datetime

我有一个代表用户生日的日期列,但未使用年份(以避免年龄数据,这可能对某些用户敏感:))。我需要将它与另一列进行比较,看看用户是否已经完成了自出生月份最后一天出现以来的培训。

换句话说,如果training_date发生在他们出生月份的最后一个月的最后一天过去之后。对于此问题,假设生日列被称为birthday

where `training`.`date_training` BETWEEN MAKEDATE(Year(CURDATE()) -1,dayofyear(`user`.`birthdate`)) AND MAKEDATE(Year(CURDATE()) -1,dayofyear(`user`.`birthdate`));

编辑:birthday以任意年份存储,目前非正式业务规则使用输入记录的年份。

1 个答案:

答案 0 :(得分:1)

如果考虑年份

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

否则仅限月份,

MONTH(training_date) > MONTH(birthday)