PROC SQL,无法过滤从数字转换的日期之间的日期部分

问题描述 投票:0回答:1

我有一个 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 = '';
  

运行时,表为空。任何有关如何解决此问题的指导将不胜感激。或者如果我什至没有走在正确的轨道上。

date sas proc-sql
1个回答
0
投票

当您说“但是 'sql.start' 和 'sql.end' 以数字 YYYYMMDD 格式存储”时,这是没有意义的,因为 SAS 日期只是数字。 如果是这样,一个日期,那么就不需要输入和放置。 如果不是,说明存储格式不是你想象的那样。 为了简单起见:如果开始和结束是日期(信息和格式无关紧要),您的代码将变为: b.start 和 b.end 之间的 datepart(a.date)

© www.soinside.com 2019 - 2024. All rights reserved.