WHERE `time` BETWEEN 'Jan 1 %' AND 'Jan 8 %' AND ...
结果
Jan 1 00:33:23
Jan 10 08:52:05
我如何避免1月10日的结果?
我尝试过使用%,< =等等的几种不同组合。
有什么想法吗?
由于
答案 0 :(得分:2)
WHERE Time >= '1/1/2011' AND Time < '1/9/2011'
或者,如果您想要任何一年的结果:
WHERE DATEPART( month, Time ) = 1 AND DATEPART( day, Time ) < 9
答案 1 :(得分:0)
目前使用此查询会使搜索引擎混淆,因为“between”设计用于数字或日期,而您将其与字符串一起使用。
您的问题有两种解决方案:
1)将您的“时间”字段转换为“日期”并将日期存储为“01-01-2010 00:00”(这是最健康的解决方案,因为您将使数据库知道这是一个日期字段) 2)尝试:
WHERE `time` >= 'Jan 1' AND `time` < 'Jan 2'
第二种解决方案可能会给出奇怪的结果,因为它比较了2个字符串,而不是2个日期。
答案 2 :(得分:0)
我不能在这里试试,但为什么不尝试使用STR_TO_DATE方法呢?您可以将时间字段更改为实际日期,然后不需要执行该字符串比较:
WHERE STR_TO_DATE(`time`,'%d,%m,%Y') BETWEEN
'2010-01-01'
AND
'2010-01-09'
另见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date