2017-08-03 86 views
-2

我有两个mysql查询,但获得不同的结果两个查询,虽然第一个查询似乎是给更多的结果。Mysql查询差异

MySQL [mydb1]> select count(*) from user_id where 
create_time>='2017-07-28' and create_time<='2017-07-31'; 

+----------+ 
| count(*) | 
+----------+ 
| 65150086 | 
+----------+ 

MySQL [mydb1]> select count(*) from user_id where 
create_time>='2017-07-28 16:30:00' and create_time<='2017-07-31 14:30:00'; 
+----------+ 
| count(*) | 
+----------+ 
| 79679998 | 
+----------+ 



+----------------+-------------+------+-----+-------------------+-----------------------------+ 
| Field   | Type  | Null | Key | Default   | Extra      | 
+----------------+-------------+------+-----+-------------------+-----------------------------+ 
| id    | bigint(11) | NO | PRI | NULL    | auto_increment    | 
| user_id  | varchar(45) | NO | UNI | NULL    |        | 
| name   | varchar(45) | YES | MUL | NULL    |        | 
| create_time | datetime | YES |  | NULL    |        | 
| update_time | timestamp | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
+----------------+-------------+------+-----+-------------------+--------- 
+0

请给出关于数据类型create_time列的更多信息 – starko

+0

您对两个查询使用不同的日期时间范围。为什么你会期望他们返回相同的结果? –

+0

@LordPeter我认为create_time <='2017-07-31'对2017-07-31全天做出了回应,但实际上它是<= 2017-07-31 00:00:00 –

回答

1

CREATE_TIME < = '2017年7月31日' 是指CREATE_TIME < = '2017年7月31日00:00:00'(一天开始)

你可能是之间的数据'2017-07-31 00:00:00'and'2017-07-31 14:30:00'

运行查询以检查您是否有上述时间间隔中的数据。