Sql 选择查询以从字符串值返回日期时间
我有以下sql查询Sql 选择查询以从字符串值返回日期时间,sql,sql-server,Sql,Sql Server,我有以下sql查询 Select ISNULL([SaleDate] ,'Totals') AS [DispTotals], case when SaleDate is null then ' ' else CONVERT(datetime, SaleDate, 103) end AS [DayOfDateDD], FROM ()------ DispTotals DayOfDateDD 26/05/2013 2013-05-26 00:00:00.000 27/05/20
Select ISNULL([SaleDate] ,'Totals') AS [DispTotals],
case when SaleDate is null then ' ' else CONVERT(datetime, SaleDate, 103) end AS [DayOfDateDD],
FROM ()------
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
sql查询的结果
Select ISNULL([SaleDate] ,'Totals') AS [DispTotals],
case when SaleDate is null then ' ' else CONVERT(datetime, SaleDate, 103) end AS [DayOfDateDD],
FROM ()------
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)时,我需要一个空白。
我不知道该怎么解决这个问题
请帮忙
CONVERT(datetime, NULLIF(SaleDate, ''), 103)
有助于避免日期字段显示为空而不是空?由于blank在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)(wrapper.您不应该使用SQL查询格式化输出数据。谢谢。但是对于我使用的报表,我需要使用SQL查询格式化。我不同意Andrey的观点,在SQL2012中,他们添加了非常方便的格式化函数来帮助格式化输出。“当有空值时,我希望有一个空格”-根据您的回答,看起来是另一种方式:您ant在有空空间时为空值。