關于Between操作符
操作符 BETWEEN … AND 會選取介于兩個值之間的資料範圍。這些值可以是數值、文本或者日期。
文法
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
注意事項
對于上訴SQL不同的資料庫對 BETWEEN…AND 操作符的處理方式是有差異的。主要有以下三種情況,
-
- 查詢出"value1" 和 “value2” 之間的資料,但不包括 “value1” 和 “value2”
- 某些資料庫會列出介于 “value1” 和 “value2” 之間并包括 “value1” 和 “value2” 的資料(比如MQL,ORACLE)
- 而另一些資料庫會列出介于 “value1” 和 “value2” 之間的資料,包括 “value1” ,但不包括 “value2” 。
Oracle和mysql的between的邊界,範圍
對于如下表test1有9條資料
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iNzkzMzcDO2AjNzYDZzU2YxYzXzQDNxcDMxMzLcJTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
結論
between 的範圍:包含兩邊的邊界值
eg: id between 3 and 7 等價與 id >=3 and id<=7
not between 的範圍:不包含邊界值
eg:id not between 3 and 7 等價與 id < 3 or id>7
Mysql中用between…and…查詢日期時注意事項
select count(1) from user where regist_date between ‘2017-07-25 00:00:00’ and ‘2017-07-25 24:00:00’;
這條sql語句查詢出結果為0。實際上資料庫有一條符合該查詢條件的資料。
錯誤原因:2017-07-25 24:00:00 晚上24點即為下一天00點 2017-07-26 00:00:00,資料庫識别不出24點的資訊;換成下一天00點即可以查詢出正确結果。
把between…and…換成>= <=能識别出來