【问题标题】:Using between mysql function ignoring year在忽略年份的mysql函数之间使用
【发布时间】:2012-06-29 16:32:27
【问题描述】:

好的,我有以下 Users 表:

id |  name  |  birthday 

1  |  nam1  |  1980-06-29  
2  |  nam2  |  1997-07-08  
3  |  nam3  |  1997-07-20  

假设今天是 2012-06-29

我怎样才能获得将在接下来的 15 天内为您庆祝生日的用户?我试过这个:

select * from users where birthday between '%-06-29' and '%-07-14';

但看起来不是一个有效的查询。

【问题讨论】:

    标签: mysql date between


    【解决方案1】:

    我认为最安全的方法是将他们 15 天后的年龄与他们今天的年龄进行比较:

    SELECT *
    FROM   Users
    WHERE  TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE + INTERVAL 15 DAY)
         > TIMESTAMPDIFF(YEAR, birthday, CURRENT_DATE)
    

    sqlfiddle 上查看。

    【讨论】:

      【解决方案2】:

      您应该尝试对“生日”的子字符串进行操作,这样您就可以将年份“删掉”

      【讨论】:

      • 好吧,我试图避免这个选项,因为我认为它会强制 MySQL 在执行比较之前将列转换为 CHAR 并改变我的性能.. 还是不? :s
      • 你应该能够使用 Cast(Substring()) 转换值,这可能是多余的,但理论上你可以将月份和日期都转换为整数并以这种方式操作跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      相关资源
      最近更新 更多