2016-04-27 57 views
0

我有一个字段是DATETIME字段。选择两次之间的行

如何选择在上午12:00至上午8:30之间的行?

$query = "select * from table where TIME(changetime) between '12:00:00 and '08:30:00'"; 

它给了我零点击:当我在此键入查询

的changetime场有这样的日期:2015年7月14日10时57分57秒

+1

08:30:00是前12:00:00 - 又见http://stackoverflow.com/questions/4714899/mysql-compare-between-time –

回答

0

1)你不需要TIME(changetime),它很可能恶化您的搜索时间,因为MySQL会需要应用一个函数,而不是使用索引。

只使用changetime。

2)where changetime between '2015-07-14 10:57:57' and '2015-07-14 12:57:57' http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between

3)你需要使用合适的范围 - 在你的例子END_DATE是在START_DATE之前。因此,之间将返回0(12:00:00> 08:30:00)

4)看@ Barmar的评论,也许你真的想在任何日期一段时间之间的条目,而不是日期时间之间

+1

如果他像它只会在特定的日期找到行,而不是那些时间之间的所有日子。 – Barmar

3

12:00:00是下午12点(中午),而不是上午12点(午夜)。您需要使用

WHERE TIME(changetime) BETWEEN '00:00:00' AND '08:30:00'