国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

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

2020-07-25 11:52:35
字體:
來源:轉載
供稿:網友

廢話少說,直接上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語句得出的結果在邏輯上就有誤。

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

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

參考資料:

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查詢超時的知識點內容,感謝大家的而學習和對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇左市| 杭州市| 大荔县| 绥化市| 江津市| 诸暨市| 喀喇沁旗| 清涧县| 岳池县| 随州市| 神池县| 石河子市| 沅陵县| 获嘉县| 巩留县| 富源县| 宁晋县| 顺昌县| 即墨市| 高青县| 元氏县| 永嘉县| 思茅市| 茌平县| 德兴市| 永春县| 顺平县| 石门县| 盐源县| 双流县| 绥宁县| 天台县| 屏东县| 太和县| 武汉市| 德兴市| 呼图壁县| 东明县| 克拉玛依市| 凌源市| 谢通门县|