【问题标题】:MySQL date comparison functionMySQL日期比较功能
【发布时间】:2010-08-26 11:09:58
【问题描述】:

在我的表格中,日期以"2010-08-26 09:00:00" 格式存储,因此是 yyyy-mm-dd。我想选择日期字段为“今天”的所有字段,因此介于 2010-08-26 00:00:012010-08-26 23:59:59 之间。

仅仅使用大于和小于运算符是行不通的,MySQL 是否有一些内置的日期比较函数可以做到这一点?

编辑:我应该提到日期存储为datetime 字段

【问题讨论】:

  • 日期正好是午夜的记录呢?
  • 公平地说,这实际上是一个内部规划工具,只输入办公时间日期(不可能在上午 8 点之前和晚上 8 点之后添加)。我的“介于”值可以反映这一点,但实际上并没有什么区别。
  • 只是提示,MySQL中还有一个BETWEEN比较函数。可以这样使用:WHERE my_date BETWEEN '2010-08-26 10:00:00' AND '2010-08-26 12:00:00'。它不适用于这种情况,因为有更好的功能。 (BETWEEN 适用于任何字符串、数字和日期)

标签: mysql date


【解决方案1】:
... WHERE DATE(field)=CURDATE()

... WHERE DATE(field)=CURRENT_DATE

... WHERE DATE(field)=CURRENT_DATE()

选择一个!

【讨论】:

  • 为了完整起见:我通常使用 DATE(field)=DATE(NOW()) 可能性能较差但更容易记住。
【解决方案2】:

我建议[...] WHERE DATEDIFF(CURDATE(),date_field) = 0 [...]

【讨论】:

  • 感谢您提供此信息。我一直在寻找这个功能(虽然不是完全相同的问题),你的回答对我很有帮助:)
【解决方案3】:
【解决方案4】:

只是对未来的建议:将日期存储在 varchar 列中几乎总是一个非常糟糕的主意。

【讨论】:

    【解决方案5】:

    使用DATE() 函数,您应该能够构造一个值进行比较:

    DATE(2010-08-26 12:13:24)
    

    将只为您返回日期部分,即。 2010-08-26.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多