在日期列上使用ISNULL

时间:2019-03-19 11:53:13

标签: sql sql-server ssms

我有一个日期列,其中某些行具有NULL值。我想使用ISNULL或类似的东西用“ N / A”代替这些值,但是,当我尝试使用ISNULL时,由于两种不同的数据类型,我得到一个错误。如果尝试将Date列转换为VARCHAR以便能够使用ISNULL,则列显示日期的方式会失真。有什么办法可以解决这个问题?

ISNULL(DateSent, 'N/A')

2 个答案:

答案 0 :(得分:3)

我推荐COALESCE(),因为它是标准的。但是,您的问题是第一列是日期/时间,并且与字符串不兼容。

因此,您需要转换值。您可以使用默认格式:

COALESCE(CONVERT(VARCHAR(255), DateSent), 'N/A')

或者您可以添加一个转换参数:

COALESCE(CONVERT(VARCHAR(255), DateSent, 120), 'N/A')

或者您可以使用FORMAT()获得更大的灵活性。

答案 1 :(得分:0)

您可以尝试

Select ISNULL(Cast(DateSent as Varchar(20)), 'N/A')

下面是一个示例:

declare @DateSent date = getdate()
Select ISNULL(Cast(@DateSent as Varchar(20)), 'N/A')

对于以下空值。

declare @DateSent1 date = NULL
Select ISNULL(Cast(@DateSent1 as Varchar(20)), 'N/A')