SAS中文论坛

标题: 求助:关于时间的读取 [打印本页]

作者: shiyiming    时间: 2004-4-13 23:07
标题: 求助:关于时间的读取
SAS变量FORMAT是24AUG2001:00:00:00,我怎么能把月份和年份单独读成两个变量?

谢了。
作者: shiyiming    时间: 2004-4-14 02:27
Try the following, you will get the answer.

[code:beda8]data a;
format t datetime. date date9.;
t=558375454;
date=datepart(t);
mon=month(date);
year=year(date);
run;

proc print data=a;
run;[/code:beda8]
作者: shiyiming    时间: 2004-4-14 04:13
我刚刚才查到那个DATEPART。 SAS ONLINE MANUAL真是太差,DATETIME说明里竟然没有DATEPART的连接。 谢了
作者: shiyiming    时间: 2004-4-14 11:03
标题: 用SAS系统的时间函数,我编了宏try
你试一下:
%Macro Day_str(in=,var=,out=);
Data &out;
  set ∈
  year=year(&var);
  Month=month(&var);
  day=day(&var);
%Mend Day_str;
%Day_str(in=,var=.out=);
   /*in=你的数据库名VAR=你的时间OUT=输出数据*/
作者: shiyiming    时间: 2004-4-16 10:57
标题: 请教时间变量二次引用问题,在SQL中第二次引用时怎样定义?
[b:0e06c]%macro day_to_str;
data daytostring;
yesd=today()-21;
format yesd DATE9.;
run;
***************************;
%Day_to_Week(in=daytostring,var=yesd,out=daytostring);
***************************;[/b:0e06c][b:0e06c]data _NULL_;
   set daytostring;
   call symput('daystr',put(yesd,DATE9.));
   call symput('week',put(week,BEST3.));
run;[/b:0e06c]
[b:0e06c]%mend day_to_str;
%day_to_str;
[/b:0e06c]
*****************************************************************************************;

[b:0e06c]Data YLD_pm_daily;
   set webdata.Pm_anad_base;
   where Date>='&daystr'd and Operation='TTL' and HTNUM^=900;
    count=QTY*Flip_rate/100;
run;[/b:0e06c]


RUN时报错:      +*****************************************************************************************;

102       +Data YLD_pm_daily;
103       +   set webdata.Pm_anad_base;
104       +   where Date>='&daystr'd and Operation='TTL' and HTNUM^=900;
[color=red:0e06c]ERROR: Invalid date/time/datetime constant '&daystr'd.
ERROR: Syntax error while parsing WHERE clause.[/color:0e06c]
105       +    count=QTY*Flip_rate/100;
106       +run;

请教在where Date>='&daystr'd 处怎样定义它(一定要用到daystr的值),好象SAS不认识'&daystr'd,无法再次翻译'&daystr'd。
请各位高手赐教,小弟在此谢谢大家了!!
作者: shiyiming    时间: 2004-4-16 13:32
标题: 只能用SQL两个表相与吗?
proc sql;
create table  YLD_pm_daily as select a.*
from a.webdata.Pm_anad_base,daytostring b
where b.yesd>=a.date and a.Operation='TTL' and a.HTNUM^=900;
quit
作者: shiyiming    时间: 2004-4-16 15:25
to:alansun 把date>='&daystr'd 改为date>="'&daystr'"d 即可
作者: shiyiming    时间: 2004-4-16 18:15
[quote="yees":9420d]to:alansun 把date>='&daystr'd 改为date>="'&daystr'"d 即可[/quote:9420d]
非常谢谢yees!
问题解决了!




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2