将datepart作为参数从表中发送到sql server中的DATEADD函数

Avi*_*ash 9 sql-server

我必须City.Date在City表中更新,我在表中有列,例如City表中的Interval和Period.

Interval列包含yy,ww,dd,qq等值,Period列包含1,2,3等值.

我想这样更新City.Date:

UPDATE City 
SET City.date = DATEADD(City.Interval, City.Period, City.date)
WHERE CityId = 13
Run Code Online (Sandbox Code Playgroud)

它得到的错误如下:

City.Interval无法识别DATEADD选项.

我如何更新City.Date使用City.Interval,City.PeriodCity.date

gbn*_*gbn 15

您无法参数化间隔位

UPDATE City 
SET date = CASE Interval
              WHEN 'yy' THEN DATEADD(yy, Period, date)
              WHEN 'ww' THEN DATEADD(ww, Period, date)
              WHEN 'dd' THEN DATEADD(dd, Period, date)
              WHEN 'qq' THEN DATEADD(qq, Period, date)
              WHEN ...
           END
WHERE CityId =13
Run Code Online (Sandbox Code Playgroud)