0

我想减去4个月,期间定义为年月:

UPDATE [MAS_YCA].[dbo].[temp_AR_SalesPersonhistory]
SET FiscalYear = year(DATEADD(month,-4,DATEADD(DAY,-1,DATEADD(month,cast(FiscalPeriod as Int),DATEADD(year,cast(FiscalYear as Int)-1900,0))))),
FiscalPeriod = right('00'+cast(month(DATEADD(month,-4,DATEADD(DAY,-1,DATEADD(month,cast(FiscalPeriod as Int),DATEADD(year,cast(FiscalYear as Int)-1900,0))))) as varchar),02)
GO

我得到的错误是Adding value to a datetime column caused an overflow.

字段会计年度和期间在数据表中都定义为 varchar。

4

1 回答 1

0

听起来您需要检查 FiscalYear 和 FiscalPeriod 列中的数据。最有可能的是,您的会计年度列中的年份无效。

SQL Server 中的日期范围是 1753 年 1 月 1 日到 9999 年 12 月 31 日。因此,在此之外的任何年份都会导致您的错误。

一个简单的检查(编辑,添加空字符串和空字符串情况):

Select * from [MAS_YCA].[dbo].[temp_AR_SalesPersonhistory]
where cast(FiscalYear as Int) > 9999 or cast(FiscalYear as Int) < 1753
or FiscalYear is NULL or FiscalYear = ''
于 2013-03-14T22:51:12.637 回答