SAS如何在where子句中更改日期格式

时间:2015-03-01 22:19:50

标签: date sas proc-sql

我有一些日期存储在yymmn6中的数据。格式和存储在date9中的其他格式。格式

我想使用where子句执行proc sql语句,但为了比较date9的两个日期。字段需要在yymmd6中。格式

是否可以在where子句

中使用
proc sql;
  select dt format=yymmn6., 
  from have;
quit;

即。

proc sql;
  select *
  from have WHERE dt format=yymmn6. = other_date;
quit;

1 个答案:

答案 0 :(得分:3)

格式化为日期的SAS变量只是一个数字(表示自01JAN1960以来的天数)。

如果other_date也是SAS日期值(无论格式如何),您也不需要将格式应用于任何一个变量。

如果other_date是表示日期的字符串(例如201501),则可以将格式应用于dt,或将other_date输入SAS日期。

/* Apply format to dt to match other_date */
proc sql ;
  select * 
  from have
  where put(dt,yymmn6.) = other_date ;
quit ;

/* Be careful here though as 201501 will input as 2015-01-01 */
proc sql ;
  select *
  from have
  where dt = input(other_date,yymm6.) ;
quit ;