全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2148 9
2010-08-30
%let rundate =17AUG2O1O;
%macro to_date(olddate);
year(&olddate) * 10000 + month(&olddate) * 100 + day(&olddate)
%mend;
%macro get_data(rundate);
%put &rundate;
    data _null_;
call symput('sys_tm', left(%to_date("&rundate"d)));
    run;
    %put &sys_tm;
%mend;
%get_data(&rundate);
--------------------------------------
%put &rundate; 结果是17AUG2O1O
但是    %put &sys_tm;  结果椒20020817
实在不知道为什么,麻烦哪位高手解答一下~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-8-30 15:33:37
%let rundate =17AUG2O1O;

0写成大写的O了吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-30 15:41:32
请高手解惑:

476  data _null_;
477     y1=year('17aug4A5534'd);
478     put y1=;
479
480     y2=year('17aug2B33d'd);
481     put y2=;
482
483     y3=year('17aug1C9888'd);
484     put y3=;
485
486     y4=year('17aug9  Whatever'd);
487     put y4=;
488
489     y5=year('17aug 7sdfljds'd);
490     put y5=;
491  run;

y1=2004
y2=2002
y3=2001
y4=2009
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-30 16:51:11
"DDMMMYYYY"d......
前5位为2位日期+3位月份缩写,2位日期可缩写为1位
第6位开始必须是连续1位,2位或者4位数字(第6位必须是数字,,,,,,,,!)
1位或2位数字的时候按yearcutoff选项将2位YY转为4位YYYY输出
4位直接输出,3位报错不匹配......

概括起来说就是
只认(连续)数字不认字符,字符都是打酱油的......

等待其他补充
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-30 17:16:00
可能与YEAR这个函数运行机制有关系
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-31 22:20:31
宏变量rundate本身是字符,所以put显示的是字符;
而宏函数的作用是把日期输出成字符格式
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群