关于SqlDateTime溢出的问题

时间:2022-03-02 03:40:32

问题: 

  项目中为了在时间上保持一致性,将所有时间都转化为了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。