datetime2溢出错误

时间:2016-04-08 19:31:38

标签: sql datetime2

我正在尝试使用以下语法将日期存储为datetime2的生日添加13年(dateadd(yy,13,isNull(cast(p.birthDTS as datetime),cast('1/1/1950') as datetime)))> = @ svcStart)

我得到为'datetime'列添加值导致溢出。

我搜索了最大值(p.birthDTS)并返回1988-10-17 00:00:00.0000000

我得到的@svcStart为2015-04-08 13:10:49.193

我有点沮丧。有什么帮助吗?

JB

2 个答案:

答案 0 :(得分:1)

如果您使用DATETIME2的值,则可能需要尝试将值转换为DATETIME2,而不是DATETIME

DATEADD(yy,13,ISNULL(CAST(p.birthDTS AS DATETIME2),CAST('1/1/1950' AS DATETIME2)))

假设您没有任何无效数据或类似问题,并且您提供的示例数据是正确的(即最大值为1988-10-17),这似乎正确为seen here

enter image description here

我确保您仔细检查所有数据类型以确保它们按预期定义,并考虑再次查询数据以检查任何边缘情况(例如,最大值和最小值,可能的空值等)

答案 1 :(得分:0)

如果日期字段中的记录中的值不是有效日期,或者您为此值添加了一些月份或日期,并且其输出将超出日期范围,则可能会遇到此错误。