1

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

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

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

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

4

1 回答 1

1

如果考虑年份

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

否则,如果只有一个月,

MONTH(training_date) > MONTH(birthday)
于 2013-11-08T16:39:10.677 回答