[英]Subtract 4 months from a pair of year/month values
我想减去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。
听起来您需要检查FiscalYear和FiscalPeriod列中的数据。 最有可能的是,“会计年度”列中的年份无效。
SQL Server中的日期范围是1753年1月1日到9999年12月31日。因此,超出此日期的任何年份都将导致您的错误。
一个简单的检查(编辑,添加了null和空字符串大小写):
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 = ''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.