下不工作:SQL案例:返回案值
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE Foo.Date
END
FROM BAR, ...
我想返回日期,如果它的值不是01.01.1900(字段類型爲DATETIME)。 有沒有可能這樣做?
下不工作:SQL案例:返回案值
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE Foo.Date
END
FROM BAR, ...
我想返回日期,如果它的值不是01.01.1900(字段類型爲DATETIME)。 有沒有可能這樣做?
如果鑄造它作爲一個varchar是沒有問題的,你可以這樣做:
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN ''
ELSE cast(Foo.Date as varchar(50))
END as Date
FROM BAR, ...
否則,如果它一定要留一個日期,就需要使用NULL而不是一個空字符串:
SELECT ...,
CASE Foo.Date
WHEN '01.01.1900' THEN null
ELSE Foo.Date
END as Date
FROM BAR, ...
嘗試......
SELECT ...,
(CASE WHEN Foo.Date!='01.01.1900' THEN Foo.Date
END) as Date
FROM BAR, ...
SELECT ...,
CASE
WHEN CAST(Foo.Date AS DATE) = '01.01.1900' THEN ''
ELSE CAST(Foo.Date AS VARCHAR(25))
END AS Date
FROM BAR, ...
由於您的字段是DATETIME,因此它的值始終包含TIME部分,並且如果時間部分是0:00(午夜),那麼它將僅等於確切日期。將其轉換爲DATE將刪除時間部分,然後您可以對其進行比較。
也在同一個CASE中返回''和日期會隱式地將空字符串轉換爲日期 - 這又是01.01.1900,因此您需要將日期轉換爲CASE其他部分中的varchar,或返回NULL而不是' 「就像Adam Plocher的例子。
So Foo.Date是一個DateTime字段嗎? –
使用'WHEN '01 .01.1900'THEN NULL'。 – Rachcha
這是一個DateTime,是的。 – mosquito87