我有一张表,其中有不同年份的结束日期,并且想要将以'2004'结尾的任何年份更改为'4712'。该列是日期类型,我不断收到错误消息
我尝试了不同的代码和case语句,但没有一个起作用
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
答案 0 :(得分:1)
您可以使用dateadd()
进行此操作。 Like
适用于字符串数据类型,例如varchar,nvarchar等。在处理日期时,您需要使用准备用于此数据类型的函数(日期,日期时间等)。在您的日期中,我添加了2708 year,它添加到4712
update table
set EndDate = dateadd(year, 2708, EndDate)
where year(EndDate) = 2004
答案 1 :(得分:1)
我个人会使用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';