需要一个日期字段在SQL Server查询中返回空白

时间:2017-11-21 21:32:22

标签: sql sql-server

我正在使用SQL Server,并且没有对数据库的写访问权限。我只能提取。

我正在加入nph2表以查看是否有记录。如果没有记录,我只需要该字段为空白。为了说明我想要做的事情,其中​​一个字段是“状态”,这很好用:

case when lsf2.STARTDATE > lsf.STARTDATE and lsf2.STARTDATE is not NULL then 
lsf2.LEGALSTATUS else '' end as 'Status'

另一个字段是日期字段,我不能做任何类似的工作。如:

case when lsf2.STARTDATE > lsf.STARTDATE and lsf2.STARTDATE is not NULL then 
nph2.STARTDATE else '' end as 'StartDate'

我一直收到'1900-01-01 00:00:00'或错误。

我理解为什么我会这样做。我已经尝试了几种方法来转换等,但没有任何作用。

基本上如果我的日期不符合,因为没有符合它的记录,我仍然需要一行包含其他数据,但是需要日期字段来填充任何内容。任何想法都会很棒。

1 个答案:

答案 0 :(得分:1)

您需要在结果中选择NULL或将整个表达式转换为varchar类型。您将无法将空字符串放入日期列。

coalesce(cast(case when lsf2.STARTDATE > lsf.STARTDATE then nph2.STARTDATE else NULL end as varchar(20)),'') as 'StartDate'