全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7997 6
2010-09-16
proc options option=yearcutoff;
run;
data _null_;
date="01JAN19"d;
put date=date9.;
date="01JAN20"d;
put date=date9.;
run;
data _null_;
date="01JAN1919"d;
put date=date9.;
date="01JAN1920"d;
put date=date9.;
run;

输出结果依次是
date=01JAN2019
date=01JAN1920
date=01JAN1919
date=01JAN1920

为什么第一个结果与第二个相差如此之大?
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-16 20:41:38

Here since the YEARCUTOFF= was set to 1920, all 2-digit years are assumed to be in the period 1920 through 2019. This means that
20-99 === 1920-1999
00-19 === 2000-2019
Clearly, that only works if you specified two-digit years.


The funny results are because the dates you gave are just on the cut-off points.


JingJu

二维码

扫码加我 拉你入群

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

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

2013-5-4 23:07:27
great.
二维码

扫码加我 拉你入群

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

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

2013-5-4 23:09:11
the default yearcutoff is 1920. The year span is from 1920 to 2019, 100 years.
二维码

扫码加我 拉你入群

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

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

2016-3-21 09:29:48
YEARCUTOFF=选项

在读取日期数据时,如果你用两位数表示年份,SAS系统在将该日期转化为SAS日期值时会自动加上前两位。自动加上的前两位取决于SAS系统的一个选项:YEARCUTOFF=。它的缺省值是1990。例如:
04/15/00   被认为是    04/15/1900
15APR95  被认为是    15APR1995

options yearcutoff=1960;
data _null_;
date="01JAN70"d;
put date=date9.;
date="01JAN49"d;
put date=date9.;
run;
结果:
Date=01JAN1970
Date=01JAN2040
YEARCUTOFF=选项决定采用两位数表示年份时所在的100年。YEARCUTOFF=1900表示所有用两位数表示的年份均在1900--1999之间。
你可以用OPTIONS语句或用OPTIONS窗口来改变YEARCUTOFF=选项,例如:
Options yearcutoff=1950;
run;

该选项改变以后,用两位数表示的年份在转化为SAS日期值时,其所在的100年就变为1950-2049之间了。例如:

04/15/00   被认为是    04/15/2000
15APR95  被认为是    15APR1995

5)注意事项

读取日期和时间数据时应注意以下几点:
A.小心YEARCUTOFF=选项的缺省设置,并在必要时改变它
B.设定合适的输入格式
C.设定合适的域宽以读入完整的日期值
D.SAS日期值从A.D. 1582年到A.D. 20000年
E.SAS系统对闰年有调整,但忽略闰秒
二维码

扫码加我 拉你入群

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

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

2017-12-19 14:28:48
楼上笔误了
Date=01JAN2049
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群