0
WHERE `time` BETWEEN 'Jan 1 %' AND 'Jan 8 %' AND ...

Results

Jan 1 00:33:23
Jan 10 08:52:05

How would I avoid the Jan 10 results?

I have tried a few different combination with %, <=, etc.

Any ideas?

Thanks

4

3 回答 3

2
WHERE Time >= '1/1/2011' AND Time < '1/9/2011'

或者,如果您想要任何年份的结果:

WHERE DATEPART( month, Time ) = 1 AND DATEPART( day, Time ) < 9
于 2011-01-11T15:44:26.003 回答
0

当前使用此查询,您会混淆搜索引擎,因为“between”是为数字或日期设计的,而您将它与字符串一起使用。

您的问题有两种解决方案:

1)将您的“时间”字段转换为“日期”并将日期存储为“01-01-2010 00:00”(这是最健康的解决方案,因为您将使数据库知道这是一个日期字段)2)尝试:

WHERE `time` >= 'Jan 1' AND `time` < 'Jan 2'

第二种解决方案可能会产生奇怪的结果,因为它比较的是 2 个字符串,而不是 2 个日期。

于 2011-01-11T15:47:31.787 回答
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

于 2011-01-11T15:47:44.957 回答