解決The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value

問題描述

在平時使用代碼操作SQL Server數據庫時,會遇到給日期格式的字段賦值,然後插入或者更新到數據庫中等。
平時使用的日期都是比較靠近現在的時間,所以一般不會遇到問題。但是有時候,比如在C#中的DateTime類中

DateTime.MinValue
	1/1/0001 12:00:00 AM
	最小值是DateTime的默認值

DateTime.MaxValue
	12/31/9999	11:59:59 AM

如果給某個字段賦值的值,使用的是DateTime的默認值,那麼在操作數據庫時,就會出現下面的錯誤:
The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.

如果是通過string 賦值,會遇到下面的問題:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.

大致意思就是:這個值不在數據庫字段類型的範圍內。

解決思路

在msdn上找到了SQL Server的datetime的相關文檔

datetime(T-SQL)

通過官網資料,就能知道,該字段用了什麼數據格式,它的範圍就確定了,後面的操作,應該在要求的範圍內,就可以解決問題。

總結如下

datetime 的範圍是:1753-01-01 00:00:00 到 9999-12-31 23:59:59.997
datetime2 的範圍是:0001-01-01 00:00:00 到 9999-12-31 23:59:59.9999999
date 的範圍是:0001-01-01 到 9999-12-31
smalldatetime 的範圍是:1900-01-01 00:00:00 到 2079-06-06 23:59:59

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章