MySQL如何比较仅包含日期而非时间的now()和一个datetime字段?

76

我有一个duedate列(datetime格式),它指定了工单的到期日期,现在我需要根据now()duedate之间的比较来获取“Due today”工单。例如,2010-04-29 02:002010-04-29 10:00的比较将以这种方式返回true。

2个回答

157

使用DATE(NOW())来比较日期。

DATE(NOW())将为您提供当前日期的日期部分,DATE(duedate)将为您提供应付款日期的日期部分。然后,您可以轻松比较这些日期。

因此,您可以像这样进行比较:

DATE(NOW()) = DATE(duedate)

或者

DATE(duedate) = CURDATE() 

点击这里查看。


@njk:是的,我正在努力提高。能告诉我为什么很差吗? - Bhavik Shah
1
展示一个示例会极大地帮助。 - Kermit
15
可以使用CURDATE()代替DATE(NOW()) - ESG
你能把它改成“将到期”吗?即 2010-04-29 02:002010-04-29 10:00 返回true,而 2010-04-29 12:002010-04-29 10:00 返回false。 - user1918956
@user1918956:是的,使用TIME()函数添加另一个子句。也许您可以告诉我您需要什么时间范围的要求? - Bhavik Shah
好的,我只是简单地放置了 AND duedate > now(),它起作用了,再次感谢 :) - user1918956

23

只比较日期而不是日期+时间(现在时间)的方法:

CURDATE()

为了使您的答案更有帮助性并增加获得赞同的机会,包括一个完整的查询示例和该函数文档的链接。 - Jose Manuel Abarca Rodríguez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接