楼主: hl305201130
2206 9

[原创博文] 日期转换问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:49份资源

大专生

43%

还不是VIP/贵宾

-

威望
0
论坛币
28 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
522 点
帖子
81
精华
0
在线时间
9 小时
注册时间
2010-8-12
最后登录
2017-2-22

楼主
hl305201130 发表于 2010-8-30 15:26:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
%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
实在不知道为什么,麻烦哪位高手解答一下~~
二维码

扫码加我 拉你入群

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

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

关键词:日期转换 symput Macro month date

回帖推荐

soporaeternus 发表于4楼  查看完整内容

"DDMMMYYYY"d...... 前5位为2位日期+3位月份缩写,2位日期可缩写为1位 第6位开始必须是连续1位,2位或者4位数字(第6位必须是数字,,,,,,,,!) 1位或2位数字的时候按yearcutoff选项将2位YY转为4位YYYY输出 4位直接输出,3位报错不匹配...... 概括起来说就是 只认(连续)数字不认字符,字符都是打酱油的...... 等待其他补充

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2010-8-30 15:33:37
%let rundate =17AUG2O1O;

0写成大写的O了吧
和谐拯救危机

藤椅
pobel 在职认证  发表于 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
和谐拯救危机

板凳
soporaeternus 发表于 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位报错不匹配......

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

等待其他补充
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
crackman + 1 + 1 我很赞同
pobel + 1 + 1 + 1 学习了

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

Let them be hard, but never unjust

报纸
crackman 发表于 2010-8-30 17:16:00
可能与YEAR这个函数运行机制有关系

地板
loures 发表于 2010-8-31 22:20:31
宏变量rundate本身是字符,所以put显示的是字符;
而宏函数的作用是把日期输出成字符格式
来这里,是因为它的好,还有曾经的向往、奋斗与遗憾!

7
lyceum 发表于 2010-9-1 02:27:45
奇怪,在我的机子上ok呀
17AUG2010

NOTE: Numeric values have been converted to character values at the places given by:
      (Line):(Column).
      1:48
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


20100817
17AUG2010

8
soporaeternus 发表于 2010-9-1 09:12:14
楼主错将0(零)打成O(欧)
所以只识别第一个数值2
故为2002年(估计yearcutoff是1950)
Let them be hard, but never unjust

9
crackman 发表于 2010-9-1 19:26:02
日期问题好多好多

10
simplyegg 发表于 2010-9-3 10:04:31
....

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 23:36