SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1052|回复: 7
打印 上一主题 下一主题

求助:关于时间的读取

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-4-13 23:07:33 | 只看该作者

求助:关于时间的读取

SAS变量FORMAT是24AUG2001:00:00:00,我怎么能把月份和年份单独读成两个变量?

谢了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-4-14 02:27:40 | 只看该作者
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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-4-14 04:13:56 | 只看该作者
我刚刚才查到那个DATEPART。 SAS ONLINE MANUAL真是太差,DATETIME说明里竟然没有DATEPART的连接。 谢了
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-4-14 11:03:59 | 只看该作者

用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=输出数据*/
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-4-16 10:57:35 | 只看该作者

请教时间变量二次引用问题,在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。
请各位高手赐教,小弟在此谢谢大家了!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-4-16 13:32:27 | 只看该作者

只能用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
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-4-16 15:25:43 | 只看该作者
to:alansun 把date>='&daystr'd 改为date>="'&daystr'"d 即可
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-4-16 18:15:06 | 只看该作者
[quote="yees":9420d]to:alansun 把date>='&daystr'd 改为date>="'&daystr'"d 即可[/quote:9420d]
非常谢谢yees!
问题解决了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-9 11:01 , Processed in 0.116013 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表