0

我正在尝试使用以下语法和 (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

4

2 回答 2

1

如果您正在使用的值是DATETIME2您可能想尝试将您的值转换DATETIME2为而不是DATETIME

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

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

在此处输入图像描述

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

于 2016-04-08T19:40:39.600 回答
0

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

于 2016-04-08T19:41:19.247 回答