2017-08-03 58 views
-2

私は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

を入力してください。2つのクエリで異なるdatetime範囲を使用しています。なぜ彼らは同じ結果を返すと期待していますか? –

+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日午前0時00分○○秒'(当日の開始)

を意味し、 '2017-07-31 00:00:00'と '2017-07-31 14:30:00'

上記の間隔でデータがあるかどうかを確認するためにクエリを実行します。