代码之家  ›  专栏  ›  技术社区  ›  DonOfDen

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

  •  0
  • DonOfDen  · 技术社区  · 10 年前

    我正在努力预测数据库中用户的“即将到来的生日”。

    我只能在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个月。

    有人能帮我吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Gordon Linoff    10 年前

    我不知道你为什么有 group by 。我会用 order by limit :

    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”。注意:这不考虑月份的日期,因为您的原始查询没有考虑。