2016年8月11日 星期四

[問題] SqlDateTime溢位

System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢位。必須在 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之間


原因:關於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的值的最小範圍,導致資料溢出的錯誤。

Solution:類別的日期屬性宣告DateTime加上'?',變成 'DateTime?' 即可解決 (因#TempTable在日期未CREATE前會先做insert,如果不宣告,就會碰到C#時間預設跟SQL最小時間衝突)


參考:http://fecbob.pixnet.net/blog/post/35575023-sqldatetime%E6%BA%A2%E5%87%BA%E9%A1%9E%E9%8C%AF%E8%AA%A4%E8%A7%A3%E6%B1%BA

沒有留言:

張貼留言