答案 0 :(得分:2)
update tab
set date_col = DATEFROMPARTS ( 2015, datepart(mm,date_col), datepart(dd,date_col))
where datepart(year,date_col) > 2015
试试这个。
答案 1 :(得分:1)
DATEADD
/ DATEDIFF
可以轻松解决此问题:
UPDATE UnnamedTable SET PoDate = DATEADD(year,
DATEDIFF(year,PoDate,'20150101'),
PoDate)
WHERE PoDate >= '20160101'
逻辑是应该从日期中减去2015年和未来日期之间的(整个)年份差异的数量。通过将参数交换到DATEDIFF
以便后面的日期出现,我不需要显式的-
来否定该值。
答案 2 :(得分:0)
Select '2015-12-01 00:00:00.000' as date_col
into #temp
union
Select '2016-12-01 00:00:00.000'
union
Select '2017-12-01 00:00:00.000'
union
Select '2018-12-01 00:00:00.000'
union
Select '2019-12-01 00:00:00.000'
update #temp
set date_col = dateadd(yyyy,datediff(yyyy,date_col,'2015-01-01'),date_col)
from #temp