日期SQL查询无法按预期工作

时间:2011-05-09 10:36:57

标签: mysql

我有以下查询:

SELECT * FROM incomings WHERE date >= '2011-04-01%' AND date <= '2011-04-29%'

它显示了01-04至28-04的结果。这可能是一个奇怪的问题但是,我认为它应该显示29-04的结果,对吧?

怎么了?

3 个答案:

答案 0 :(得分:2)

你的语法很奇怪。该查询通常会写成:

SELECT * FROM incomings WHERE date >= '2011-04-01' AND date <= '2011-04-29'

我认为,从您尝试查询数据的方式来看,date列实际上是DATETIMETIMESTAMP列。如果是这种情况,那么'2011-04-29%'将被投射到'2011-04-29 00:00:00'

我建议你改用这个SQL:

SELECT * FROM incomings WHERE date >= '2011-04-01' AND date < '2011-04-30'

答案 1 :(得分:1)

此处“%”的目的是什么(除了使日期无效)?

如果“date”的类型为DATETIME,则:

'2011-04-29 00:00:00' is <= to '2011-04-29'
'2011-04-29 00:00:01' is not <= to '2011-04-29'

答案 2 :(得分:0)

您不需要前导%,没有小时的日期被解释为给定日期的午夜(或最开始)。