SQL中碰到的坑之BETWEEN AND
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在我的實(shí)際項(xiàng)目中,我多次遇到了SQL語言中的BETWEEN … AND運(yùn)算符的問題。盡管我的腳本看起來好像是正確的,也沒有多大問題,但是查詢結(jié)果與他人的相比卻相差了幾十萬行,這著實(shí)讓我感到非常震驚。經(jīng)過多次踩坑,我終于學(xué)會了如何避免這個(gè)問題,這也許就是古人說的“吃一塹,長一智”的道理吧。 1、問題提出 我需要對一張用戶登錄表進(jìn)行統(tǒng)計(jì)分析,目標(biāo)是篩選出在2023年9月29日至2023年10月6日期間登錄系統(tǒng)的用戶信息。其目的是旨在確定在國慶節(jié)期間活躍的用戶,并獲取他們的相關(guān)信息。用戶登錄表如下: 2、錯(cuò)誤的SQL語句 初看之下,這個(gè)問題似乎很簡單,所以想都沒想就迅速地寫出了SQL語句,結(jié)果一運(yùn)行與預(yù)期的結(jié)果不一致。見下圖所示: 大家有沒有發(fā)現(xiàn)2023年10月6日的兩條登錄信息沒有包括進(jìn)來,這是什么原因呢。 3、原因分析 之所以會出現(xiàn)上述的問題,是因?yàn)樵?span style=";padding: 0px;outline: 0px;max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important">MySQL中,使用BETWEEN進(jìn)行日期范圍查詢時(shí),默認(rèn)將右側(cè)查詢邊界值限制到了日期的開始時(shí)間,即00:00:00。因此,對于查詢范圍為2023年9月29日至2023年10月6日期間的情況,實(shí)際上只會查詢到2023年10月6日的00:00:00之前的記錄,而不包括該日期當(dāng)天的其他時(shí)間段的記錄,如19:48:52和23:03:18。那么如何解決這個(gè)問題呢? 4、正確的SQL語句 可以采取以下兩種方式來解決上述的問題。 方法一: 方法二:要比方法一簡便,實(shí)際工作中常用這種方法。 該文章在 2024/2/7 22:58:42 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |