楼主: louis_bai
9037 0

[程序分享] 日期与时间合并的sas程序 [推广有奖]

  • 0关注
  • 1粉丝

本科生

54%

还不是VIP/贵宾

-

威望
0
论坛币
1079 个
通用积分
2.0011
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
867 点
帖子
23
精华
0
在线时间
143 小时
注册时间
2018-7-23
最后登录
2021-3-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在遇到日期yyyy-mm-dd与时间hh:mm:ss需要合并的时候,可以将日期时间合并为标准字符"yyyy-mm-ddThh:mm:ss"后,利用以下日期时间格式进行转化为可运算的日期时间(变量b),也可以通过put转化为任意输出的字符格式,如datetime18.
data test1;
  a="2004-01-31T12:55:00";
  b=input(a,e8601dt.);
  c=put(b,datetime18.);
  put a b c;
run;

data test2;
  a="2004-01-31T12:55:00";
  b=input(a,is8601dt19.);
  c=put(b,datetime18.);
  put a b c;
run;

data test3;
  a="2004-01-31T12:55:00";
  a1=input(scan(a,1,"T"),yymmdd10.);
  a2=input(scan(a,2,"T"),hhmmss8.);
  b=dhms(a1,0,0,a2);
  c=put(b,datetime18.);
  put a b c;
run;

不规则的日期时间,由于均用函数进行转换,实际应用是也可直接用嵌套函数一步完成:
**********先获得日期时间型,后转为字符******;
data _null_;
a="2018-6-5";
b="8:11";
dt1=input(a,yymmdd10.);
time1=input(b,time8.);
datim3=dhms(dt1,0,0,time1);
datim4=put(datim3,is8601dt20.);
put time1  dt1 datim3 datim4;
run;

*******先获得日期时间字符型,后转为数值******;
data _null_;
a="2018-6-5";
b="8:11";
dt1=input(a,yymmdd10.);
dt2=put(dt1,yymmdd10.); *可以识别转换月份与日期小于10的格式;
time1=input(b,time8.);
time2=put(time1,tod8.); *小时小于会补0,凑足2位;
datim1=dt2||'T'||time2;
datim2=input(datim1,is8601dt20.);
put time1 time2 dt1 dt2 datim1 datim2 ;
run;



二维码

扫码加我 拉你入群

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

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

关键词:sas程序 datetime Input time date

已有 2 人评分经验 论坛币 收起 理由
eijuhz + 100 + 2 精彩帖子
zl89 + 100 精彩帖子

总评分: 经验 + 200  论坛币 + 2   查看全部评分

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

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

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

GMT+8, 2024-4-19 14:59