這篇文章主要介紹了SqlDateTime溢位該怎麼解決的相關資料,需要的朋友可以參考下

錯誤出現:匯入資料時出現“SqlDateTime 溢位。必須介於 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之間。”
出現這種問題多半是因為你插入或者更新資料庫時datetime欄位值為空預設插入0001年01月01日造成datetime型別溢位。

原因分析:

關於DateTime,在將DateTime型別,插入到資料庫的時候,最容易出現的一種錯誤:“SqlDateTime 溢位。必須介於 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之間”原因是我們在取DateTime.MinValue的值,並插入到資料庫的時候,DateTime.MinValue值範圍和資料庫DateTime型別資料範圍不一致造成的。資料庫中,DateTime型別欄位,最小值1/1/1753 12:00:00,而.NET Framework中,DateTime型別,最小值為1/1/0001 0:00:00,顯然,超出了Sql的值的最小範圍,導致資料溢位的錯誤。

解決方法:

使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime型別,這樣SqlDateTime的MinValue和Sql中DateTime的範圍吻合,就不會再出現以上的錯誤了。

但是如果直接將System.Data.SqlTypes.SqlDateTime.MinValue 賦值給 System.DateTime型別的變數會出現如下錯誤:錯誤 86 無法將型別“System.Data.SqlTypes.SqlDateTime”隱式轉換為“System.DateTime”。存在一個顯式轉換(是否缺少強制轉換?) 我們可以採用Convert.ToDateTime來進行強制轉換。

附:SQLServer資料庫的DateTime預設值為 1900/1/1 00:00:00,如果插入null值,會預設為1900/1/1 00:00:00。