MySQL BETWEEN AND踩坑記錄
MySQL BETWEEN AND踩坑
在日常使用MySQL的過程中,我們很習慣性的會使用“BETWEEN … AND…”來進行條件查詢,篩選對應時間、狀態(tài)的數(shù)據(jù)。
但,如果這個日期字段是日期/時間格式,那么坑就來了。
SELECT * # 正式學習工作盡量不要直接使用 *,這里是自建的模擬表無所謂 FROM test WHERE time BETWEEN '2023-04-01' AND '2023-04-20' ORDER BY time desc
輸出結果:
但是!
實際上我們的表中是有2023-04-20這一天的數(shù)據(jù)的
SELECT * FROM test WHERE DATE(time) = '2023-04-20'
MySQL的BETWEEN ... AND...
的取值確實是閉區(qū)間,但是如果日期字段包含時間,即2023-04-20 09:23:35
MySQL會將BETWEEN '2023-04-01' AND '2023-04-20'
自動轉換為BETWEEN '2023-04-01 00:00:00' AND '2023-04-20 00:00:00'
也就是說,當日期字段帶時間時,最后一天僅會獲取00:00:00
這一時間點的數(shù)據(jù),而非我們想象中的最后一天一整天的數(shù)據(jù)!
解決思路
1.使用DATE()
DATE(time) BETWEEN '2023-04-01' AND '2023-04-20'
2.使用小于號,小于最后一天的后一天
time >= '2023-04-01' and time < '2023-04-21'
3.手動補上時間(不建議,麻煩且可能出現(xiàn)更多坑)
time BETWEEN '2023-04-01 00:00:00.000000' AND '2023-04-20 23:59:59.999999'
MySQL之between ...and....小知識點
使用BETWEEN AND關鍵字檢索數(shù)據(jù)表中指定的數(shù)據(jù)內(nèi)容。
帶BETWEEN AND關鍵字的查詢
我們已經(jīng)學會了如何用IN關鍵字精確查詢數(shù)據(jù)表中的內(nèi)容,但是在很多時候,我們僅僅是想知道在某一范圍內(nèi)有多少符合條件的數(shù)據(jù),這就不得不使用到關鍵字BETWEEN AND了,它是閉區(qū)間,前后都可以取到。
BETWEEN AND需要兩個參數(shù)支持,一個是范圍的開始值,另一個就是結束值了。
如果字段值滿足指定的范圍查詢條件,就返回這些滿足條件的數(shù)據(jù)內(nèi)容。
語法規(guī)則為:
SELECT 字段名 FROM 表名 WHERE 字段名 BETWEEN n1 AND n2; ???????
舉個例子假設我們現(xiàn)在有一張表Mall_products,
內(nèi)容如下:
我們將使用BETWEEN AND關鍵字檢索出所有國家代碼為1~50的商品的信息。
查詢代碼如下:
SELECT * FROM Mall_products WHERE prod_country BETWEEN 1 AND 50;
結果為:
查詢過程如下:
可以看到,返回結果包含了國家代碼從1~50之間的字段值。尤其值得注意的是,端點值1也包含在返回結果中。
帶NOT BETWEEN AND關鍵字的查詢
像上一關介紹的關鍵字IN一樣,我們還可以對關鍵字BETWEEN AND進行取反,表示查詢指定范圍之外的值。
語法規(guī)則為:
SELECT 字段名 FROM 表名 WHERE 字段名 NOT BETWEEN n1 AND n2; ???????
舉個例子我們依然使用表Mall_products。
現(xiàn)在我們想要查詢除了國家代碼為1~50的所有國家的產(chǎn)品內(nèi)容。
查詢代碼如下:
SELECT * FROM Mall_products WHERE prod_country NOT BETWEEN 1 AND 50;
結果為:
由結果可以看出,返回的結果只有大于國家代碼50的內(nèi)容。
怎么樣?簡單吧!
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mysql快速插入千萬條數(shù)據(jù)的實戰(zhàn)教程
這篇文章主要給大家介紹了關于Mysql快速插入千萬條數(shù)據(jù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03MySQL定時任務不能正常執(zhí)行的原因分析及解決方法
大家好,本篇文章主要講的是MySQL定時任務不能正常執(zhí)行的原因分析及解決方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Django+mysql配置與簡單操作數(shù)據(jù)庫實例代碼
這篇文章主要介紹了Django+mysql配置與簡單操作數(shù)據(jù)庫實例,需要的朋友可以參考下2017-07-07