楼主: chouxiangdaishu
6656 15

SAS如何整个读入 yyyy-mm-dd hh:mm:ss数据 ? [推广有奖]

11
jingju11 发表于 2010-3-18 09:56:16 |只看作者 |坛友微信交流群
chouxiangdaishu 发表于 2010-3-18 09:54
楼上,试了,出错。谢谢。是用哪个版本的SAS啊?有运行过吗?
sorry. SAS 9.2 ISO format.

使用道具

12
chouxiangdaishu 发表于 2010-3-18 09:58:40 |只看作者 |坛友微信交流群
9.1.3,惨!。。。。。。。。谢谢!

使用道具

13
jingju11 发表于 2010-3-18 10:18:42 |只看作者 |坛友微信交流群
soporaeternus 发表于 2010-3-18 09:03
一个笨办法,把前10位的yyyy-mm-dd变成date9.再用datetimew.
Good idea. this should work on SAS 9.1.3


  1. DATA _NULL_;
  2. X = '2003-01-12 23:11:32';
  3. T =INPUT(scan(X, 1, ' '), yymmdd10.)*3600*24+input(scan(x,2, ' '), time8.);
  4. DATE = DATEPART(T);
  5. TIME = TIMEPART(T);
  6. PUT X = T= T=DATETIME. DATE=date11.  TIME=time. ;
  7. RUN;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

使用道具

14
gzjb 发表于 2010-3-18 10:47:19 |只看作者 |坛友微信交流群
** SAS read data with format:  yyyy-mm-dd hh:mm:ss  ****;
** SAS 9.13 Version  ***;

data testdt(keep=datetp my_time date_time);
  input datetp :$10. @12 my_time time8.;
  my_year=input(substr(datetp,1,4),4.);
  my_mon=input(substr(datetp,6,2),2.);
  my_day=input(substr(datetp,9,2),2.);
  my_date=mdy(my_mon,my_day,my_year);
  format my_date MMDDYY10.;
  date_time=DHMS(my_date,hour(my_time),minute(my_time),second(my_time));
  format date_time datetime18.;
datalines;
1960-03-01 08:23:45
1960-01-01 18:23:58
1967-02-04 09:45:59
;
run;

proc print;
var my_time date_time;
format my_time time8.  date_time datetime18.;
id datetp;
run;

使用道具

15
gzjb 发表于 2010-3-18 10:47:50 |只看作者 |坛友微信交流群
** SAS read data with format:  yyyy-mm-dd hh:mm:ss  ****;
** SAS 9.13 Version  ***;

data testdt(keep=datetp my_time date_time);
  input datetp :$10. @12 my_time time8.;
  my_year=input(substr(datetp,1,4),4.);
  my_mon=input(substr(datetp,6,2),2.);
  my_day=input(substr(datetp,9,2),2.);
  my_date=mdy(my_mon,my_day,my_year);
  format my_date MMDDYY10.;
  date_time=DHMS(my_date,hour(my_time),minute(my_time),second(my_time));
  format date_time datetime18.;
datalines;
1960-03-01 08:23:45
1960-01-01 18:23:58
1967-02-04 09:45:59
;
run;

proc print;
var my_time date_time;
format my_time time8.  date_time datetime18.;
id datetp;
run;


output of SAS:


  datetp       my_time             date_time

                            1960-03-01     8:23:45      01MAR60:08:23:45
                            1960-01-01    18:23:58      01JAN60:18:23:58
                            1967-02-04     9:45:59      04FEB67:09:45:59

使用道具

16
neversarah 发表于 2014-6-19 16:41:35 |只看作者 |坛友微信交流群
jingju11 发表于 2010-3-18 10:18
Good idea. this should work on SAS 9.1.3
这个能不能不在日志栏显示?

使用道具

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

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

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

GMT+8, 2024-4-28 05:58