T-sql:案例显示日期或转换日期为nvarchar

时间:2012-03-16 12:14:22

标签: tsql type-conversion

我想使用一个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,但那不起作用。有谁知道一个很好的解决方案吗?

2 个答案:

答案 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)

据我所知,SQL不允许在同一列中使用混合数据类型。也可以将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',