我有以下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 )时,我想要一个空格。 我不知道如何解决这个问题。
请帮助。
答案 0 :(得分:1)
CONVERT(datetime, NULLIF(SaleDate, ''), 103)
有助于避免 1900-01-01 00:00:00.000
答案 1 :(得分: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(包装器。