关于SqlDateTime溢出的问题
问题:
项目中为了在时间上保持一致性,将所有时间都转化为了UTC时间。
其中有一段SqlDateTime.MinValue的代码,由于疏忽将其转为UTC时间后导致了
"SqlDateTime溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。"
原因:
数据库中的dateTime类型,最小值是 1/11753 12:00:00,而当SqlDateTime.MinValue转换为UTC的时间后,超出了这个最小值范围。所以导致了这 个错误。
总结:
在.NET FrameWork中,DateTime类型的最小值是1/1/0001 0:00:00,而这个值很明显是超过了数据库的dateTime类型的限制。所以在和数据库操作相关的字段要使用SqlDateTime类型,而不应该使用DateTime。