对于定义yymmdd10.;iso8601

iso8601:  

1' TRTSDTM iso8601=RFXSTDTC $20.;

                1) TRTSDTM=input(RFXSTDTC,e8601dt.);
                 format TRTSDTM e8601dt.; 

常见报错:函数input的参数无效    

正确写法:2)TRTSDTM=input(RFXSTDTC,b8601dt.);
                 format TRTSDTM e8601dt.; 

注:当字符串中同时有 date 和 datetime 日期时,就只能用 B8601DT.  

b8601dt.,既可以作为输出格式也可以作为输入格式,如果在input中使用(作为输入格式),则把原来字符型的带T连接符的时间日期格式变为sas数值型时间日期值。

求解答?b8601dt. e8601dt.  is8601dt.区别怎么用?为什么1’1)会报错:函数input的参数无效?

2'可以不用1'法;直接  var1=domainDTA_raw ||"T"|| domainTIM_raw即可:常见于制作SDTM时 

注:1.domainDTA/TIM_raw一般已经是定义为数值型了 

       2.一般要求外在形像即可即满足2’,format 内在定义不了也行。

yymmdd10.:

1'BRTHDT yymmdd10.=BRTHDTC $20 

set sdtm.dm;
                  BRTHDT=input(BRTHDTC,yymmdd10.);
                  format BRTHDT yymmdd10.;  

注:使用 DTC 结尾的变量存储字符型日期,使用 DT 结尾的变量存储数值型日期,这是符合标准的做法

2'BRTHDTC yymmdd10.=BRTHDTC $20.把自己定义成yymmdd10.: 

最好把原变量先赋值给新变量,转化成1'的做法:

set sdtm.dm(rename=(BRTHDTC=BRTHDTC1));
                  BRTHDTC=input(BRTHDTC1,yymmdd10.);
                  format BRTHDTC yymmdd10.;  

目的:BRTHDTC $20.定义成yymmdd10.

一般ERORR:var1=input(var1,yymmdd10.)可能会导致强制数值型赋值给字符型原因:var1=:字符型     input(var1,yymmdd10.):数值型

解决方法:1.赋值给定义的新变量对其处理 

                  2.注意数值字符是否转化成功

常见错误:

1.BRTHDTC=input(BRTHDTC,yymmdd10.);
format BRTHDTC yymmdd10.;
keep  BRTHDTC;

报错yymmdd10.不符合:原因:BRTHDTC此时为字符型,而yymmdd10.为数值型

2.BRTHDTC_C=input(BRTHDTC,yymmdd10.);
format BRTHDTC_C yymmdd10.;
keep  BRTHDTC BRTHDTC_C;

赋值_c虽然有结果未报错,但是目的变了。BRTHDTC_c被定义成 yymmdd10.,BRTHDTC 仍未改变仍是字符型$20.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值