主頁 > 知識庫 > SQL Server中查詢結果超出了查詢時間范圍解決方法

SQL Server中查詢結果超出了查詢時間范圍解決方法

熱門標簽:股票配資電銷機器人 地圖標注如何弄全套標 電銷機器人 深圳 萬利達綜合醫(yī)院地圖標注點 外呼系統(tǒng)會封嗎 武漢AI電銷機器人 實體店地圖標注怎么標 在電子版地圖標注要收費嗎 南京電銷外呼系統(tǒng)哪家好

廢話少說,直接上SQL代碼(有興趣的測試驗證一下),下面這個查詢語句為什么將2008-11-27的記錄查詢出來了呢?這個是同事遇到的一個問題,個人設計了一個例子。

USE AdventureWorks2014;
GO
SELECT * FROM [Person].[Person]
WHERE ModifiedDate >= '2008-11-26 00:00:00:000'
 AND ModifiedDate = '2008-11-26 23:59:59.999'

 

其實如果細看過文檔的話,應該知道是什么原因,因為數(shù)據(jù)類型Datetiem的時間范圍:00:00:00 到 23:59:59.997 , 最后部分的范圍為0 ~997,官方文檔提示,datetime的秒的小數(shù)部分精度的有舍入,具體請見下面

datetime 秒的小數(shù)部分精度的舍入

如下表所示,將 datetime 值舍入到 .000、.003、或 .007 秒的增量 。

用戶指定的值

系統(tǒng)存儲的值

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',如下截圖所示,所以尤其對數(shù)據(jù)精確性有要求的地方,要注意這些地方,否則SQL語句得出的結果在邏輯上就有誤。

官方文檔https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15 中也有描述不準確的地方,如下截圖所示: 

其實這個是精度問題,如果選擇datetime2數(shù)據(jù)類型,它默認的小數(shù)精度更高,不會遇到這個問題,更多細節(jié)建議參考官方文檔(下面參考資料)

參考資料:

https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/datetime2-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/zh-cn/sql/t-sql/data-types/datetime-transact-sql?view=sql-server-ver15

以上就是本次介紹的關于SQL Server查詢超時的知識點內(nèi)容,感謝大家的而學習和對腳本之家的支持。

您可能感興趣的文章:
  • SQL Server 磁盤請求超時的833錯誤原因及解決方法
  • C#訪問SqlServer設置鏈接超時的方法
  • sqlserver 2005連接超時采用bat命令解決

標簽:泰安 濟源 武威 安徽 廣東 汕頭 臺州 濟寧

巨人網(wǎng)絡通訊聲明:本文標題《SQL Server中查詢結果超出了查詢時間范圍解決方法》,本文關鍵詞  SQL,Server,中,查詢,結果,超,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server中查詢結果超出了查詢時間范圍解決方法》相關的同類信息!
  • 本頁收集關于SQL Server中查詢結果超出了查詢時間范圍解決方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章