BETWEEN 操作符
操作符 BETWEEN ... AND 會選取介于兩個值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期
select 字段名?from?表名?where?字段名?between?值1?and?值2
在處理數(shù)值時:
在 Mysql 中使用?between and 包含邊界值,即閉區(qū)間內;
在處理文本時:
在日常處理數(shù)據(jù)時,between and的用法基本都是處理數(shù)值或者日期格式,處理字符串類型用between and 意義不大
在處理時間日期時,
在 Mysql 中使用 between and 不包含右邊界數(shù)據(jù),例如:
SELECT * FROM log_info WHERE add_time BETWEEN '2020-08-04' and '2020-08-09'
查詢出來的數(shù)據(jù)并不會包含?2020-08-09?的數(shù)據(jù),因為 Mysql 對日期的查詢是默認?00:00:00,所以上面的時間實際是:2020-08-04 00:00:00?至?2020-08-09 00:00:00,2020-08-09?當天的數(shù)據(jù)不在區(qū)間內,所以查詢不到。
解決方法
將右邊界日期往后推一天,如?2020-08-04?-?2020-08-10;
將右邊界時間精確到秒,如?2020-08-04?-?2020-08-09 23:59:59;
以上問題只會在字段類型為?datetime?中出現(xiàn),Mysql 本身是包含邊界的,但如果字段類型為?datetime?時,數(shù)據(jù)將會被轉換為?2020-08-04 00:00:00,而數(shù)據(jù)類型為?date?則不會出現(xiàn)上述問題。
那么如何范圍查詢內的文本信息呢?
使用in
-- 條件查詢-范圍查詢: in(條件1,條件2) :表示在某個不連續(xù)的范圍內
select * from goods where goods_company in('淘寶','Tmall');