有一个包含以下其他字段的大表: ID,effective_date,Expiration_date。
expiration_date是datetime20。格式,可以为NULL
我尝试提取2014年12月31日之后过期的行或不过期(NULL)。
在proc sql查询中添加以下where语句不会给我带来任何结果
localHostName
但是,当我只选择NULL到期日期并添加以下字段时:
where coalesce(datepart(expiration_date),input('31/Dec/2020',date11.))
> input('31/Dec/2014',date11.);
它显示'通过'在TAG下,所有其他字段都是正确的。
这是为了复制我在SQL Server中使用的内容
put(coalesce(datepart(expiration_date),input('31/Dec/2020',date11.)),date11.) as value,
put(input('31/Dec/2014',date11.),date11.) as threshold,
case when coalesce(datepart(expiration_date),input('31/Dec/2020',date11.)) > input('31/Dec/2014',date11.)
then 'pass' else 'fail' end as tag
使用SAS Enterprise Guide 7.1,在尝试解决问题时,我一直在使用
where isnull(expiration_date,'9999-12-31') > '2014-12-31'
我做错了什么?谢谢。
一些过期日期:
proc sql inobs=100;`
答案 0 :(得分:2)
我建议使用日期常量(“31DEC2014”d)而不是日期函数,否则使用显式passthrough或禁用隐式passthrough。在数据库之间进行数据时,日期函数具有挑战性,因此在可能的情