解决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

猜你喜欢

转载自blog.csdn.net/weixin_44728363/article/details/88948049