我正在尝试使用以下语法和 (dateadd(yy,13,isNull(cast(p.birthDTS as datetime),cast('1/1/1950' as datetime) ))>=@svcStart)
我得到向“日期时间”列添加值导致溢出。
我搜索了 max(p.birthDTS) 并返回 1988-10-17 00:00:00.0000000
我得到 @svcStart 为 2015-04-08 13:10:49.193
我有点不知所措。有什么帮助吗?
jb
如果您正在使用的值是DATETIME2
您可能想尝试将您的值转换DATETIME2
为而不是DATETIME
:
DATEADD(yy,13,ISNULL(CAST(p.birthDTS AS DATETIME2),CAST('1/1/1950' AS DATETIME2)))
假设您没有任何无效数据或类似问题,并且您提供的示例数据是正确的(即最大的是1988-10-17
),这似乎是正确的,如下所示:
我会确保您仔细检查所有数据类型以确保它们按预期定义,并考虑再次查询您的数据以检查任何边缘情况(例如,最大值和最小值、可能的空值等)。
如果您在日期字段中的记录中的值不是有效日期,或者您向该值添加了一些月份或日期并且其输出将超出日期范围,您可能会遇到此错误。