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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值