您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關SQL Server中查詢結果超出了查詢時間范圍的解決方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
廢話少說,直接上SQL代碼(有興趣的測試驗證一下),下面這個查詢語句為什么將2008-11-27的記錄查詢出來了呢?這個是同事遇到的一個問題,個人設計了一個例子。
USE AdventureWorks2014;GOSELECT * FROM [Person].[Person]WHERE ModifiedDate >= '2008-11-26 00:00:00:000' AND ModifiedDate <= '2008-11-26 23:59:59.999'
其實如果細看過文檔的話,應該知道是什么原因,因為數據類型Datetiem的時間范圍:00:00:00 到 23:59:59.997 , 最后部分的范圍為0 ~997,官方文檔提示,datetime的秒的小數部分精度的有舍入,具體請見下面
datetime 秒的小數部分精度的舍入
如下表所示,將 datetime 值舍入到 .000、.003、或 .007 秒的增量 。
用戶指定的值
系統存儲的值
01/01/98 23:59:59.999
1998-01-02 00:00:00.000
01/01/98 23:59:59.995
01/01/98 23:59:59.996
01/01/98 23:59:59.997
01/01/98 23:59:59.998
1998-01-01 23:59:59.997
01/01/98 23:59:59.992
01/01/98 23:59:59.993
01/01/98 23:59:59.994
1998-01-01 23:59:59.993
01/01/98 23:59:59.990
01/01/98 23:59:59.991
1998-01-01 23:59:59.990
實驗測試驗證,998會轉換為997,而'2008-11-26 23:59:59.999'的話,就會轉換為'2008-11-27 00:00:00.000',尤其對數據精確性有要求的地方,要注意這些地方,否則SQL語句得出的結果在邏輯上就有誤。
看完上述內容,你們對SQL Server中查詢結果超出了查詢時間范圍的解決方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。