我有一个 SAS 表
sastable
,我将其与 SQL 数据库中的列连接以创建新表。但是,我需要使用 sql.data
中的日期列过滤 sastable
。 sastable.date
已采用日期时间格式,但 sql.start
和 sql.end
以数字 YYYYMMDD 格式存储。
我的代码目前如下所示:
Proc sql;
Create Table newtable as
Select a.*,
b.sqldate
From sastable as a
Left Join sql as b on a.id=b.id
where (datepart(a.date) between input(put(b.start, yymmdd10.),yymmdd10.)
and input(put(b.end, yymmdd10.), yymmdd10.))
and b.void = '';
运行时,表为空。任何有关如何解决此问题的指导将不胜感激。或者如果我什至没有走在正确的轨道上。
当您说“但是 'sql.start' 和 'sql.end' 以数字 YYYYMMDD 格式存储”时,这是没有意义的,因为 SAS 日期只是数字。 如果是这样,一个日期,那么就不需要输入和放置。 如果不是,说明存储格式不是你想象的那样。 为了简单起见:如果开始和结束是日期(信息和格式无关紧要),您的代码将变为: b.start 和 b.end 之间的 datepart(a.date)