楼主: flyarrow998
23809 14

SAS获取当前日期的上月初日期、上月末日期问题 [推广有奖]

  • 0关注
  • 0粉丝

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
32 点
帖子
5
精华
0
在线时间
0 小时
注册时间
2013-3-14
最后登录
2013-3-14

5论坛币
具体程序和报错请看下面代码,请各位高手帮忙解答下吧,拜谢了!

%LET begdate=put(intnx('month',today(),-1,'end'),yymmd7.)||'-01'; //为上月初得到的值为'2013-02-01'
%LET enddate=put(intnx('DAY',today(),-day(today())),yymmdd10.);   //为上月末得到的值为'2013-02-28'
proc sql;
%tdlink;
create table test as   
select *     
  from connection to teradata         
  (
        select *
     from wy_table
     where Card_Num='XXXXXXXXXXXXXXXX'
         and Event_Dt between &begdate and &enddate
   );
disconnect from teradata;

quit;

运行后报错为 Teradata prepare: Syntax error: Data Type "intnx" does not match a Defined Type name.

如果改成 %LET begdate='2013-02-01' %LET enddate='2013-02-28' 就可以正常运行了了。

比较奇怪,通过TD函数获取的是字符串类型的,这样有问题吗?还需要如何转换下?



关键词:connection Disconnect Teradata proc sql Connect test sql create where
沙发
可~乐 发表于 2013-3-14 10:57:00 |只看作者 |坛友微信交流群
  1. data _null_;
  2. begdate=put(intnx('month',today(),-1,'b'),yymmdd10.);
  3. enddate=put(intnx('month',today(),-1,'e'),yymmdd10.);
  4. call symput("begdate",begdate);
  5. call symput("enddate",enddate);
  6. run;
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 30 + 30 + 1 + 1 + 1 分析的有道理

总评分: 经验 + 30  论坛币 + 30  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
Imasasor 发表于 2013-3-14 12:20:26 |只看作者 |坛友微信交流群
  data 步函数不能随便在宏中使用,一般要加%或%sysyfunc,不过不知道put能不能在宏函数中使用
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

板凳
webgu 发表于 2013-3-14 13:37:25 |只看作者 |坛友微信交流群
Imasasor 发表于 2013-3-14 12:20
data 步函数不能随便在宏中使用,一般要加%或%sysyfunc,不过不知道put能不能在宏函数中使用
input , put, 所有的数组函数等不能用于%sysfunc中。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

报纸
playmore 发表于 2013-3-14 13:42:12 |只看作者 |坛友微信交流群
webgu 发表于 2013-3-14 13:37
input , put, 所有的数组函数等不能用于%sysfunc中。
嗯,但PUTN和PUTC又可以了
SAS在这些函数上的设定真是蛋疼啊
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

地板
webgu 发表于 2013-3-14 14:05:28 |只看作者 |坛友微信交流群
playmore 发表于 2013-3-14 13:42
嗯,但PUTN和PUTC又可以了
SAS在这些函数上的设定真是蛋疼啊
嗯,不报错,但是好像不能出结果。
查了下,putc,putn在运行时执行。
put在编译时执行。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

7
flyarrow998 发表于 2013-3-14 14:18:47 |只看作者 |坛友微信交流群
webgu 发表于 2013-3-14 14:05
嗯,不报错,但是好像不能出结果。
查了下,putc,putn在运行时执行。
put在编译时执行。
那大虾,我的代码需要作如何修改呢?
create table test as   
select *     
  from connection to teradata         
  (
        select *
     from wy_table
     where Card_Num='XXXXXXXXXXXXXXXX'
         and Event_Dt between &begdate and &enddate
   );
Event_Dt 需between 当前系统日期的上月初日期及上月末日期,否则每个月我都得手工去修改日期,比较麻烦,不能用PUT该如何是好呢

使用道具

8
webgu 发表于 2013-3-14 14:54:31 |只看作者 |坛友微信交流群
flyarrow998 发表于 2013-3-14 14:18
那大虾,我的代码需要作如何修改呢?
create table test as   
select *
2楼的CODE应该可以的。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

9
flyarrow998 发表于 2013-3-14 15:25:01 |只看作者 |坛友微信交流群
webgu 发表于 2013-3-14 14:54
2楼的CODE应该可以的。
按2楼代码修改后运行没有报错,但查询无数据,奇怪了,如果begdate和enddate确实为'2013-02-01'和'2013-02-28' 那么数据库中是有数据的,后来通过select &begdate,&enddate 查看,&begdate 尽然变成了'2010' &enddate 变成了'1983',费解啊!

data _null_;

begdate=put(intnx('month',today(),-1,'b'),yymmdd10.);

enddate=put(intnx('month',today(),-1,'e'),yymmdd10.);

call symput("begdate",begdate);

call symput("enddate",enddate);

run;

proc sql;
%tdlink;
create table test as   
select *     
  from connection to teradata         
  (
        select *
     from wy_table
     where Card_Num='XXXXXXXXXXXXXXXX'
         and Event_Dt between &begdate and &enddate
   );
disconnect from teradata;

quit;

使用道具

10
webgu 发表于 2013-3-14 16:27:51 |只看作者 |坛友微信交流群
11   data _null_;
12   begdate=put(intnx('month',today(),-1,'b'),yymmdd10.);
13   enddate=put(intnx('month',today(),-1,'e'),yymmdd10.);
14   call symput('begdate',begdate);
15   call symput('enddate',enddate);
16   run;

NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


17
18   %put  &begdate   &enddate;
2013-02-01   2013-02-28
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 08:11