2017-03-02 17 views
1

Ich versuche, einen bestimmten Datetime-Wert durch einen anderen zu ersetzen. Ich versuchte es mit:SQL Server - Ersetzen Sie das Datenfeld durch ein anderes Datum

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

Aber das führt in

Jan 1 1999 12:00AM 

Was mache ich falsch hier?

+2

Ist das spezifisch für ein Datum, wie dargestellt, oder ist die Logik komplizierter? Willst du nur, dass 1999 1900 ist, oder willst du, dass jedes Datum um 99 Jahre zurückgesetzt wird? – 3BK

+0

@ 3BK Es ist nur spezifisch für dieses Datum. – DenStudent

Antwort

2

Sie können nicht replace() auf einem datetime Datentyp verwenden, aber Sie können eine Kombination aus isnull() und nullif() oder einem case Ausdruck verwenden.

mit isnull(nullif()):

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

mit einem case Ausdruck:

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 Demo: http://rextester.com/QMI12865

Verwandte Themen