【问题标题】:SELECT MySQL rows where today's date is between two DATE columns选择今天日期在两个 DATE 列之间的 MySQL 行
【发布时间】:2012-04-29 10:53:06
【问题描述】:

如何获取表中今天日期介于(包括)该行的两个 DATE 列之间的行? 例如,取一个表的这两列:

我怎样才能在 4 月 10 日获得第一行和第二行,或者在 25 日获得第三行(包括在内,就像我说的那样)?

任何帮助将不胜感激。提前致谢!

【问题讨论】:

标签: mysql select


【解决方案1】:

如果您有日期(不是日期时间)列,请使用 CURTIME() 或 DATE(NOW()),不要使用 CesarC 正确写的 NOW(),您可以使用 BETWEEN。

SELECT * FROM table WHERE CURTIME() BETWEEN from_date AND to_date

【讨论】:

    【解决方案2】:

    你会发现很多人使用 between 运算符,但我更喜欢使用简单的 AND 运算符。

    我这样做是因为尽管运算符 IS 包含在内,但简单的日期 (2012-04-10) 可以算作午夜,因此不包含在内。

    所以这应该可以正常工作,并且始终包括日期范围的边界:

    SELECT * FROM table WHERE from_date <= '2012-04-10' AND to_date >= '2012-04-10'
    

    【讨论】:

      【解决方案3】:

      可以如下添加条件

      DATE(NOW()) between date1 and date2
      

      【讨论】:

      • 也是解决办法
      【解决方案4】:

      只需使用 SQL now() 函数来比较日期列,如下所示:

      SELECT * from table where now() >= from_date and now() <= to_date
      

      【讨论】:

      • 使用 CURDATE() 代替,注意如果你使用 NOW() 它包含时间信息并且可能导致排除某些日期,即 next 函数返回 false (0): select "2010-01-01 14:00:00"
      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 2015-10-28
      • 2017-01-17
      • 1970-01-01
      相关资源
      最近更新 更多