选择查询以从字符串值返回datetime

时间:2013-05-27 04:24:55

标签: 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 ()------

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 )时,我想要一个空格。 我不知道如何解决这个问题。

请帮助。

2 个答案:

答案 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(包装器。