MySQL日期比较返回不同的结果

时间:2014-11-20 11:24:42

标签: php mysql date comparison

我有一个查询选择日期之间的行。

SELECT * FROM `table` WHERE statusDate >= '2014-10-01' AND statusDate <= '2014-10-31'

当我使用上面的查询时,它返回的行少于以下查询......

SELECT * FROM `table` WHERE statusDate > '2014-09-30' AND statusDate < '2014-11-01'

从技术上讲,我认为它会返回相同的结果,但事实并非如此。

我对底层查询的理解是它从所述日期之上和之下的日期中选择,不包括。为什么结果会有所不同?

1 个答案:

答案 0 :(得分:0)

如果statusDateDATETIME列,则时间将导致该月最后一天的行的结果不同。当您将日期2014-10-31转换为DATETIME时,它会2014-10-31 00:00:00。如果statusDate2014-10-31 09:23:11的行,则第一个查询不会选择该行,但第二个查询会选择该行。

您可以使用以下方法解决此问题:

WHERE statusDate >= '2014-10-01' AND DATE(statusDate) <= '2014-10-31'

或者您可以将时间添加到WHER子句:

WHERE statusDate >= '2014-10-01' AND statusDate <= '2014-10-31 23:59:59'