2015-02-08 101 views
2

我有这样的查询:Mysql的只显示第一行

SELECT * FROM bcl1_logs where created_at between '2015-02-07' and '2015-02-10' 

和表像这样:

0 = "id":1, 
     "pc_name":"BCL101", 
     "created_at":"2015-02-07 22:25:44" 


2 = "id":2, 
     "pc_name":"BCL101", 
     "created_at":"2015-02-07 22:25:44" 

3 = "id":3, 
     "pc_name":"BCL101", 
     "created_at":"2015-02-10 22:25:44" 

当我询问我的说法,这只是显示前两个'2014-02-07'日期的行,并且当我的查询是BETWEEN日期'2014-02-07'和'2015-02-10'时,它不包括'2015-02-10'的日期。

回答

0

添加时间到你的查询

SELECT * FROM bcl1_logs where created_at between '2015-02-07 00:00:00' and '2015-02-10 23:59:59' 
+0

有!像这样简单。谢谢 – user352156 2015-02-08 18:01:14

0

如果仅使用日期部分,时间部分被设置为00:00:00。所以你的查询看起来像

created_at between '2015-02-07 00:00:00' and '2015-02-10 00:00:00' 

而且不包括第三个记录与时间22:25:44

变化:

created_at between '2015-02-07 00:00:00' and '2015-02-10 23:59:59' 
0

value between X and Y意味着value >= x AND value < y,所以'2015-02-10'被排除在外。如果你想使用between运营商,包括它,你需要添加额外的一天:

SELECT * 
FROM bcl1_logs 
WHERE created_at BETWEEN '2015-02-07' AND '2015-02-11' 
0

其他答案解释,你是比较有日期和时间的日期问题,所以尽量在使用DATE()查询:

SELECT * FROM bcl1_logs WHERE DATE(created_at) BETWEEN '2015-02-07' AND '2015-02-10'