楼主: webgu
3950 5

[技术讨论与投票] 关于日期格式到底是何格式? [推广有奖]

贵宾

学科带头人

95%

还不是VIP/贵宾

-

TA的文库  其他...

Python与统计

SAS与统计

威望
2
论坛币
102549 个
通用积分
3.4687
学术水平
475 点
热心指数
493 点
信用等级
434 点
经验
62369 点
帖子
1555
精华
4
在线时间
2201 小时
注册时间
2009-5-4
最后登录
2025-12-25

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章

楼主
webgu 发表于 2011-9-26 22:09:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家都知道,日期格式在本质上是数字格式。但是在实际使用时,我个人感觉还是有点混乱。
例如,请教大家,就如下CODE,讨论下yymmddw.,yymmw.,yymmnw等格式的数据类型。
  1. data test;
  2. d1=put('08sep2009'd,yymmdd10.); /*ok,数字->字符*/
  3. d2=input("2009-09-08",yymmdd10.) ;/*ok,字符->数字*/

  4. *d3=input("2009-09-08",yymmddn8.) ;/* error,目标数据类型应为数字*/
  5. *d4=put("2009-09-08",yymmddn8.) ;/* error,源数据类型应为数字*/
  6. d5=put('08sep2009'd,yymmddn8.) ;/* ok, 数字->字符*/

  7. d6=put('08sep2009'd,yymm7.) ; /* ok, 数字->字符*/
  8. *d7=input("2009-09-08",yymm7.) ; /* error,目标数据类型应为数字*/
  9. run;
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:Input Error yymmn 数据类型 code error

已有 1 人评分热心指数 信用等级 收起 理由
jingju11 + 1 + 1 鼓励积极发帖讨论

总评分: 热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

沙发
YueweiLiu 发表于 2011-9-26 22:17:10
input/put 只是定义变量的输入输出格式而已,记住这一点儿就好理解了。
d3=input("2009-09-08",yymmddn8.) ;  2009-09-08 要想读成日期,输入格式不能用 yymmddn8. (适合类似 20090908 的变量)要用yymmdd10. 或者 yymmddd10.,所以会报错。
d4=put("2009-09-08",yymmddn8.) ;  "2009-09-08" 本身是字符型变量,无法使用作为数值型---日期的输出格式。
d7=input("2009-09-08",yymm7.) ; 这就和d3有些类似,使用了错误的输入格式。
已有 2 人评分学术水平 热心指数 收起 理由
webgu + 1 + 1 一语中的
jingju11 + 1 + 1 分析的有道理

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

藤椅
zhangzachary 发表于 2011-9-26 22:18:28
put(numeric,format)
input(character,informat)

d4 it must be a numeric in "put"
d3 & d7 character doesn't match with informat. you want input a variable of length 8 or 7 but in fact it's 10
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

板凳
webgu 发表于 2011-9-26 23:08:46
谢谢yue兄,这样说明白多了。大家有兴趣着摩下下面的组合。
  1. data tt;
  2.   d_n=123;
  3.   d_c="123";

  4.   d1=put(d_c,$3.);
  5.   *d2=put(d_c,best.); /*error*/
  6.   d3=put(d_n,best.);
  7.   d4=put(d_n,$3.) ;

  8.   d5=input(d_c,best.);
  9.   d6=input(d_c,$3.);
  10.   d7=input(d_n,best.);
  11.   *d8=input(d_n,$3.) ; /*error*/

  12. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

报纸
jingju11 发表于 2011-9-27 11:36:28
问题提的好,回答得也好。京剧

地板
webgu 发表于 2011-9-27 15:11:49
jingju11 发表于 2011-9-27 11:36
问题提的好,回答得也好。京剧
呵呵,我是自己对有些概念还是有些模糊。原来一直就简单认为put()函数就是把数字转字符,INPUT()就是把字符转数字。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 12:08