使用between and查找时间范围时的日期边界问题
最近在一個項目的后臺數據庫查找中,需要根據表中的時間字段查找某一范圍內的數據(7天、15天、30天),這時我想用between and(其實使用DateDiff函數就可以完成,詳情請看另一片文章:SQL查詢今天、昨天、7天內、30天),但我對于between and查找時間范圍時的邊界問題不是特別清楚,所以在網上查找了相關資料,在這兒做個簡單的記錄。
首先要了解between操作符的用法,操作符 BETWEEN … AND 會選取介于兩個值之間的數據范圍。這些值可以是數值、文本或者日期。
SQL中的BETWEEN 語法
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2例如:
//SELECT * FROM 表名 WHERE 日期字段名 BETWEEN '20170101020304' AND '20170101020304' SELECT * FROM student_info WHERE `createDate` between '20170101020304' and '20180101020304' //等同于: SELECT * FROM student_info WHERE `createDate` >= '20170101020304' and `createDate` <= '20180101020304'需要注意的是
不同的數據庫對 BETWEEN…AND 操作符的處理方式是有差異的。某些數據庫會列出介于 “Adams” 和 “Carter” 之間的人,但不包括 “Adams” 和 “Carter” ;某些數據庫會列出介于 “Adams” 和 “Carter” 之間并包括 “Adams” 和 “Carter” 的人;而另一些數據庫會列出介于 “Adams” 和 “Carter” 之間的人,包括 “Adams” ,但不包括 “Carter” 。
所以,請檢查你的數據庫是如何處理 BETWEEN…AND 操作符的!
一般情況
SQL Server中 between and是包括邊界值的,not between不包括邊界值,不過如果使用between and 限定日期需要注意,如果and后的日期是到天的,那么默認為00:00:00 例如:and 后的日期為2017年04月06日,就等價于2017-04-06 00:00:00 ,那么2017-04-06 15:10:34的數據就差不到了,需要進行to_char處理。
總結
以上是生活随笔為你收集整理的使用between and查找时间范围时的日期边界问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 相约转型新范式,第四范式2021发布会报
- 下一篇: 今天上班的乐趣是......