在日期列上使用 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')
我有一个日期列,其中一些行有 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')