仅在带有案例陈述的列中更改年份

  • 本文关键字:案例 陈述 sql sql-server
  • 更新时间 :
  • 英文 :


我有一个表格,其中包含不同年份的结束日期,并希望将以"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

相关内容

  • 没有找到相关文章

最新更新