在日期列上使用 ISNULL 或 COALESCE

Using ISNULL or COALESCE on date column

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

ISNULL(DateSent, 'N/A')

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

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

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

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

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

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

你可以试试这个

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')