我有一个表格,其中包含不同年份的结束日期,并希望将以"2004"结尾的任何年份更改为"4712"。该列是日期类型,我不断收到错误
我尝试了不同的代码和案例陈述,但没有一个有效
select
case
when h.EndDate like '2004%' then '4712%'
else h.EndDate
end as EndDate
from table h
1/31/2004
2/28/2004
3/31/2004
依此类推,将是唯一更改为:
1/31/4712
2/28/4712
3/31/4712
就个人而言,我会使用 datefromparts()
:
select datefromparts(4712, month(h.enddate), day(h.enddate))
from h
where h.enddate >= '2014-01-01' and h.enddate < '2015-01-01';
在更新中,这看起来像:
update h
set enddate = datefromparts(4712, month(h.enddate), day(h.enddate))
where h.enddate >= '2014-01-01' and h.enddate < '2015-01-01';
您可以使用
dateadd()
. Like
适用于字符串数据类型,如varchar,nvarchar等。使用日期时,您需要使用准备处理此数据类型(日期、日期时间等(的函数。到你的日期,我添加了 2708 年,增加了 4712。
update table
set EndDate = dateadd(year, 2708, EndDate)
where year(EndDate) = 2004