如何根据条件

时间:2016-01-05 08:46:18

标签: sql-server

在我的数据库中有

PoDate

enter image description here

我需要更新今年比2015年更新

3 个答案:

答案 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