mysql和日期比较与日期功能和没有

时间:2017-09-07 13:17:38

标签: mysql

在使用date()而没有使用时,我注意到了一种奇怪的行为:

当我使用

SELECT * FROM `mytable` WHERE date(date_add) >= '2017-08-01' and date(date_add) <= '2017-08-31' 

我得到了给定日期范围内的所有日期记录,但如果这样做:

SELECT * FROM `mytable` WHERE date_add >= '2017-08-01' and date_add <= '2017-08-31'

我没有从最后一天获得31行,为什么? (date_add字段是日期时间类型)

修改

我应该如何正确编码日期范围?因为到目前为止我所理解的是,如果我不使用YYYY-MM-DD HH-MM-SS这样的全职时间,我应该始终与DATE()进行比较,以避免错过最后一天的结果。

2 个答案:

答案 0 :(得分:0)

那是因为date_addDATETIME字段。如果日期2017-08-31的时间类似于表格中的08:15:0013:21:00,则您的日期会比2017-08-31 00:00:00“更大”。您的比较只会返回时间为2017-08-31的{​​{1}}的数据。

答案 1 :(得分:0)

因为没有date()转换,您的比较意味着值'2017-08-01 00:00:00' and '2017-08-01 00:00:00'