0

我有以下 sql 查询

 Select ISNULL([SaleDate] ,'Totals') AS [DispTotals],
case when SaleDate is null then '  ' else CONVERT(datetime, SaleDate, 103) end AS   [DayOfDateDD],
FROM ()------

sql查询的结果

DispTotals      DayOfDateDD
26/05/2013  2013-05-26 00:00:00.000
27/05/2013  2013-05-27 00:00:00.000
Totals      1900-01-01 00:00:00.000

我知道 SaleDate 的最后一行是空值。当我更改查询时:

Select ISNULL([SaleDate] ,'Totals') AS [DispTotals],
case when SaleDate is null then 'NULLVALUE ' else 'NONULL' end AS [DayOfDateDD],

结果是:

DispTotals      DayOfDateDD
26/05/2013  NONULL
27/05/2013  NONULL
Totals      NULLVALUE 

当 SaleDate 中有空值( NULLVALUE)时,我想要一个空白空间。我不确定如何解决这个问题。

请提供任何帮助。

4

2 回答 2

1
CONVERT(datetime, NULLIF(SaleDate, ''), 103) 

帮助避免了1900-01-01 00:00:00.000

于 2013-05-27T04:34:42.337 回答
0

您想为日期字段显示空白而不是 NULL?由于空白转换为 1900... 默认日期值,因此您必须转换回 VARCHAR:

CAST(ISNULL(CASE WHEN SaleDate IS NULL
             THEN NULL
             ELSE CONVERT(datetime, SaleDate, 103) 
             END,''),AS VARCHAR(20))

如果内部 CONVERT 语句返回 NULL,那么您可以完全摆脱 CASE 语句,只保留 CAST(ISNULL( 包装器。

于 2013-05-27T04:36:18.623 回答