2013-05-27 75 views
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属性)。 我不知道如何解决这个问题。

请任何帮助。

+1

你不应该使用SQL查询格式化输出数据 –

+0

感谢。但我使用的报告,我需要在SQL查询来进行格式化。 – user1282609

+1

我不同意安德烈,在SQL2012他们非常添加方便的格式化功能,以帮助格式化输出 –

回答

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

有助于避免1900-01-01 00:00:00.000

+0

*'我想要一个空的空间,当有空值'* - 基于你的回答,它出现了另一种方式:你想要一个空值,当有一个空 空间。 –

0

你想显示空白代替空的日期字段?由于空管型为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(包装。