我有一些日期存储在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;
答案 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 ;