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 日までです。したがって、これ以外の年はエラーの原因になります。

簡単なチェック (編集、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 = ''
于 2013-03-14T22:51:12.637 に答える