繁体   English   中英

从一对年/月值中减去4个月

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM