2017-03-02 24 views
1

我想用另一个日期替换一个特定的日期时间值。我试了一下:SQL Server - 用另一个日期替换datatime字段

SELECT REPLACE(t.date,'1999-01-01 00:00:00.000','1900-01-01 00:00:00.000') 
FROM table t 

但是,这导致到

Jan 1 1999 12:00AM 

我在做什么错在这里?

+2

这是特定于一个日期,如图所示,或者是逻辑更复杂?你只是想让1999年成为1900年,还是你希望每个日期能够回落99年? – 3BK

+0

@ 3BK这只是特定的日期。 – DenStudent

回答

2

你不能在一个datetime数据类型使用replace(),但你可以使用的isnull()nullif(),或case表达的组合。

使用isnull(nullif()):使用case表达

select isnull(nullif(t.date,'1999-01-01 00:00:00.000'),'1900-01-01 00:00:00.000') 
from table t 

select case when t.date = '1999-01-01 00:00:00.000' 
      then '1900-01-01 00:00:00.000' 
      else t.date 
      end 
from table t 

rextester演示:http://rextester.com/QMI12865

相关问题