我试图使用以下语法将13年添加到以datetime2形式存储的生日(dateadd(yy, 13,isNull(cast(p.birthDTS作为日期时间),cast(‘1/1/1950“作为日期时间)
然后,我得到了向“datetime”列添加一个值,导致溢出。
我搜索了max(p.birthDTS),它返回了1988-10-17 00:00:00.0000000。
我得到了@svcStart 2015-04-08 13:10:49.193
我有点迷糊了。有什么帮助吗?
jb
发布于 2016-04-08 19:40:39
如果您使用的值是DATETIME2,您可能想尝试将您的值转换为DATETIME2,而不是DATETIME:
DATEADD(yy,13,ISNULL(CAST(p.birthDTS AS DATETIME2),CAST('1/1/1950' AS DATETIME2)))假设您没有任何无效的数据或类似的问题,并且您提供的示例数据是正确的(即最大的是1988-10-17),这似乎是正确的在这里看到的:

我会确保您再次检查所有数据类型,以确保它们是按预期定义的,并考虑再次查询数据以检查任何边缘情况(例如,最大和最小值、可能的空值等)。
发布于 2016-04-08 19:41:19
如果日期字段中的记录中的值不是有效日期,或者在此值中添加了一些月或日期,并且该值的输出将超过日期范围,则可能会遇到此错误。
https://stackoverflow.com/questions/36507858
复制相似问题