我想使用一个case语句,我的逻辑确定一个日期。如果返回的值是空值,我想要显示“无”而不是空值。
见下面的代码。
CASE WHEN DATEDIFF(d, vso.pod_ata, ISNULL(cncr.cntr_date3, GETUTCDATE())) - 14 > 0 THEN vso.pod_ata + 14
ELSE CONVERT(NVARCHAR(10), 'none')
END AS 'start_dem',
SQL SERVER抱怨转换,所以我尝试将其转换为nvarchar,但那不起作用。有谁知道一个很好的解决方案吗?
答案 0 :(得分:4)
您应该转换日期,而不是字符串。
CASE WHEN DATEDIFF(d, vso.pod_ata, ISNULL(cncr.cntr_date3, GETUTCDATE())) > 14 THEN convert(VARCHAR(10), dateadd(day, 14, vso.pod_ata), 120)
ELSE 'none'
END AS 'start_dem',
答案 1 :(得分:2)
vso.pod_ata + 14
转换为NVARCHAR
。
CASE WHEN DATEDIFF(d, vso.pod_ata, ISNULL(cncr.cntr_date3, GETUTCDATE())) - 14 > 0 THEN CONVERT(NVARCHAR(50), vso.pod_ata + 14)
ELSE CONVERT(NVARCHAR(50), 'none')
END AS 'start_dem',