2017-03-02 9 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

は、1日に、この固有の、またはロジックが複雑ですが?あなたは1999年を1900年にしたいのですか?または、すべての日付を99年前にロールバックしたいですか? – 3BK

+0

@ 3BKそれはその日に特有です。 – DenStudent

答えて

2

あなたはdatetimeデータ型にreplace()を使用することはできませんが、isnull()nullif()の組み合わせ、またはcase表現を使用することができます。

isnull(nullif())を使用して:

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

case式を使った:

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

関連する問題