我有以下查询:
SELECT * FROM incomings WHERE date >= '2011-04-01%' AND date <= '2011-04-29%'
它显示了01-04至28-04的结果。这可能是一个奇怪的问题但是,我认为它应该显示29-04的结果,对吧?
怎么了?
答案 0 :(得分:2)
你的语法很奇怪。该查询通常会写成:
SELECT * FROM incomings WHERE date >= '2011-04-01' AND date <= '2011-04-29'
我认为,从您尝试查询数据的方式来看,date
列实际上是DATETIME
或TIMESTAMP
列。如果是这种情况,那么'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)
您不需要前导%,没有小时的日期被解释为给定日期的午夜(或最开始)。