我想减去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。
答案 0 :(得分: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 = ''