如果日期包含'1900',则返回空字符串

时间:2013-11-20 13:02:27

标签: sql-server

我的日期字段的日期值格式为'dd-MM-yyyy'。如果值包含'1900'或年份是1900,我需要在select中返回空字符串。

我已经尝试了case语句并且它工作正常,但我需要返回''而不是Null。如果我用''替换NULL,那么我得到的正常值不是''

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

3 个答案:

答案 0 :(得分: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 :(得分:3)

您可以使用YEAR代替字符串方法:

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

Demo

Here您可以找到CONVERT的格式,我已将105(意大利语)用于dd-MM-yyyy

答案 2 :(得分:0)

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