我的日期字段的日期值格式为'dd-MM-yyyy'。如果值包含'1900'或年份是1900,我需要在select中返回空字符串。
我已经尝试了case语句并且它工作正常,但我需要返回''而不是Null。如果我用''替换NULL,那么我得到的正常值不是''
CASE
WHEN CHARINDEX('1900', StartDate) > 0 THEN NULL
ELSE StartDate
END AS SD
答案 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
Here您可以找到CONVERT
的格式,我已将105
(意大利语)用于dd-MM-yyyy
。
答案 2 :(得分:0)
CASE YEAR(StartDate) WHEN 1900 THEN NULL ELSE StartDate END AS SD