【问题标题】:Mysql Date Field Search using months to find upcoming birthdayMysql 日期字段搜索使用月份来查找即将到来的生日
【发布时间】:2014-08-20 11:43:17
【问题描述】:

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

我只能对即将生日的用户罚款至 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 个月。

有人可以帮我吗?

【问题讨论】:

    标签: php mysql sql date logic


    【解决方案1】:

    我不知道你为什么有group by。我会用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”。注意:这不考虑月份中的哪一天,因为您的原始查询没有考虑。

    【讨论】:

    • 我怎样才能在这个中记录日期?即订单应该是日期然后是月份。 @戈登
    猜你喜欢
    • 2016-03-14
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2018-11-01
    • 1970-01-01
    • 2013-09-18
    • 2015-12-12
    相关资源
    最近更新 更多