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

标签 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`));

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

最佳答案

如果考虑年份

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

否则如果只有月份,

MONTH(training_date) > MONTH(birthday)

关于mysql - 如何为特定月份选择最近一个月的最后一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19863673/

相关文章:

php - 未从数据库 PHP LongBlob 接收图像

sql - 实现表级检查约束

Linux Date 有时不显示日期值

python - 处理具有混合日期格式的 Pandas 数据框列

Python 日期字符串 mm/dd/yyyy 转日期时间

mysql - 在数据库设计中使用用户名作为主键不好吗?

mysql - 根据另一个表的条件更新表,包括函数

mysql - 返回重复值数量的查询

mysql - 如何将多个查询组合到同一个表但不同的列中?

asp.net - Asp 将查询放入数组并在不刷新页面的情况下通过它