php - Mysql 日期字段搜索使用月份来查找即将到来的生日

标签 php mysql sql date logic

我正在尝试查找数据库中存在的用户的“即将到来的生日”。

我只能在 12 月(12 月)之前对用户即将到来的生日进行罚款。

如果我需要找到明年即将到来的生日怎么办?

我的查询:

SELECT c.F_CONTACT_ID,
       c.F_CONTACT_NAME,
       c.F_CONTACT_FNAME,
       DATE_FORMAT(c.F_DOB, '%d/%m') F_DOB
FROM t_contact c
WHERE DATE_FORMAT(F_DOB, '%m') >= '08'
GROUP BY c.F_CONTACT_ID
ORDER BY c.F_DOB ASC LIMIT 0 ,
                           10

如何找到“一月”出生的用户即将到来的生日,因为

DATE_FORMAT(F_DOB, '%m') >= '08'

可以检查到第12个月。

有人可以帮助我吗?

最佳答案

我不知道为什么你有一个分组依据。我会使用 order bylimit 来做到这一点:

SELECT c.F_CONTACT_ID,
       c.F_CONTACT_NAME,
       c.F_CONTACT_FNAME,
       DATE_FORMAT(c.F_DOB, '%d/%m') F_DOB
FROM t_contact c
ORDER BY (case when month(c.F_DOB) >= '08' then month(c.F_DOB)
               else month(c.F_DOB) + 12
          end)
LIMIT 0, 10;

也就是说,在明年的月份数字中添加“12”。注意:这不会考虑该月的某一天,因为您的原始查询没有考虑该日期。

关于php - Mysql 日期字段搜索使用月份来查找即将到来的生日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25403811/

相关文章:

mysql - 创建 Sql 查询以组合两个表并打乱结果

php - 外键 "can not add or update a child row"

MYSQL数据库IFNULL查询

mysql - SQL auto_increment 行为

php - PHP中用静态调用非静态方法

php - 当数组存在时无法从数组中检索值

sql - SQL中的TRIM函数可以更精确吗?

mysql - 通过应用特定过滤器来查询和分组数据

php - _initX() 函数是否按顺序调用

php - 检查数据库中的大量信息