【问题标题】:What would be the difference between NOW() and DATE(NOW())?NOW() 和 DATE(NOW()) 之间有什么区别?
【发布时间】:2013-04-11 10:47:49
【问题描述】:

NOW()DATE(NOW()) 在性能、结果和精度方面有什么区别? MySQL 将如何理解这两个函数?

我想知道什么是最好的

 WHERE the_date < NOW()

WHERE the_date < DATE(NOW())

【问题讨论】:

  • the_date 是完整的时间戳还是只是 YYYY-MM-DD?
  • now() 将返回日期时间,date(now()) 将仅返回日期。

标签: mysql sql date


【解决方案1】:

NOW() 返回当前日期/时间。 DATE(NOW()) 返回日期部分。如果您只想知道日期,请使用 CURRDATE()。

【讨论】:

  • 实际上,date(now) 只会提取当前日期的日期部分。所以如果 now() 是 2013-04-11 12:55:19 那么 date(now()) 将返回 2013-04-11
  • 之前我说除了时间部分,但我在你之前修改了我的回复:)
【解决方案2】:

您正在查看两个不同的比较。

由于the_date 包含一天中的时间,表达式the_date &lt; NOW() 将考虑您执行SQL 语句时的一天中的时间,如果@987654323 中的YYYY-MM-DD 可能会有所不同@ 与当前日期时间相同。

对于the_date &lt; DATE(NOW()),您将the_dateYYYY-MM-DD 00:00:00000 进行比较,因此NOW() 的当前时间将被忽略并设置为午夜。

这里更重要的是您需要做什么以及您期望的结果。

【讨论】:

  • 你说得对,我认为这两个函数都返回了相同的结果。谢谢
  • 这是一个微妙的点,我曾经有一个SQL错误,直到下午3:12才出现......正是因为这个原因!
【解决方案3】:

DateTime.Now 属性返回当前日期和时间,例如2011-07-01 10:09.45310

DateTime.Today 属性返回当前日期,其中时间分量设置为零,例如 2011-07-01 00:00.00000

DateTime.Today 属性实际上返回DateTime.Now.Date

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2014-07-31
    • 1970-01-01
    • 2013-01-28
    • 2014-08-07
    • 2017-08-04
    相关资源
    最近更新 更多