2013-11-20 47 views
0

我有日期值格式爲'dd-MM-yyyy'的日期字段。如果值包含'1900'或年份爲1900,我需要返回空字符串。如果日期包含'1900',則返回空字符串

我已經嘗試過case語句,它工作正常,但我需要返回''而不是Null。如果我更換空與'然後我得到的正常值不「」

CASE 
WHEN CHARINDEX('1900', StartDate) > 0 THEN NULL 
ELSE StartDate 
END AS SD 
+1

「_date field_」是指「DateTime」/「Date」還是「varchar」列? –

+0

dateTime數據類型 – user1263981

+0

''對於datetime數據類型是無效值,null或有效日期只是支持的值。 ''是字符數據。你必須將結果類型轉換爲varchar來支持你想要的結果 – xQbert

回答

3

如果列是一個日期,你想有一個格式化的值返回,那麼雙方轉換爲相關類型,例如

CASE 
    WHEN YEAR(StartDate) = 1900 THEN '' 
    ELSE CONVERT(VARCHAR, StartDate, 105) -- Adjust datetime format to suit -- see also http://msdn.microsoft.com/en-us/library/ms187928.aspx 
END AS SD 
+1

+1 - 我相信日期時間風格105產生'dd-MM-yyyy'格式OP正在尋找 – Bridge

0
CASE YEAR(StartDate) WHEN 1900 THEN NULL ELSE StartDate END AS SD 
+0

我需要返回空字符串不是'NULL' – user1263981

+0

我錯過了。在這種情況下,羅蘭的答案是你正在尋找的 – dazedandconfused

3

你可以使用YEAR,而不是字符串方法:

SELECT CASE WHEN YEAR(StartDate) = 1900 
      THEN '' 
      ELSE CONVERT(varchar(10),StartDate,105) 
     END AS SD 
FROM dbo.TableName 

Demo

Here你可以找到CONVERT的格式,我有dd-MM-yyyy使用105(意大利)。

+0

該死的,你用CONVERT打敗了我:-) – Heliac

相關問題