普通<= >=和between的sql查詢方式區別與推薦


推薦SQL Server精准時間查詢方式

USE Test

/*插入或修改3條時間為以下極端情況的記錄
UPDATE dbo.UserInfo SET AddTime = '2016-8-1 00:00:00' WHERE id=2
UPDATE dbo.UserInfo SET AddTime = '2016-8-1 23:59:59.005' WHERE id=3
UPDATE dbo.UserInfo SET AddTime = '2016-8-2 00:00:00' WHERE id=4
*/
--三條記錄如下
SELECT * FROM dbo.UserInfo WITH(NOLOCK) WHERE id IN (2,3,4)
--BETWEEN對比的是兩側<=(小於等於)或>=(大於等於),查詢出來的結果會略顯不精准
SELECT * FROM dbo.UserInfo WITH(NOLOCK) WHERE AddTime BETWEEN '2016-8-1 00:00:00' AND  '2016-8-2 00:00:00'
--傳統的大小於等於的方式,在59秒005毫秒的情況下是無法被查詢出來的,就出現了數據錯誤的情況
SELECT * FROM dbo.UserInfo WITH(NOLOCK) WHERE '2016-8-1 00:00:00' <= AddTime AND AddTime <= '2016-8-1 23:59:59'
--對於時間要求較高的功能還是要使用兩天之間0點的方式前面使用<=(小於等於)后面使用<(小於)第二天0點的方式
SELECT * FROM dbo.UserInfo WITH(NOLOCK) WHERE '2016-8-1 00:00:00' <= AddTime AND AddTime < '2016-8-2 00:00:00'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM