常用日期和时间函数有:
MDY(m,d,yr) 生成yr年m月d日的SAS日期值
YEAR(date) 由SAS日期值date得到年
MONTH(date) 由SAS日期值date得到月
DAY(date) 由SAS日期值date得到日
WEEKDAY(date) 由SAS日期值date得到星期几
QTR(date) 由SAS日期值date得到季度值
HMS(h,m,s) 由小时h、分钟m、秒s生成SAS时间值
DHMS(d,h,m,s) 由SAS日期值d、小时h、分钟m、秒s生成SAS日期时间值
DATEPART(dt) 求SAS日期时间值dt的日期部分
INTNX(interval,from,n) 计算从from开始经过n个in间隔后的SAS日期。其中interval 可以取\'YEAR\'、\'QTR\'、\'MONTH\'、\'WEEK\'、\'DAY\'等。
比如,INTNX(\'MONTH\', \'16Dec1997\'d, 3)结果为1998年3月1日。注意它总是返回一个周期的开始值。
INTCK(interval,from,to) 计算从日期from到日期to中间经过的interval间隔的个数,其中interval取\'MONTH\'等。比如,INTCK(\'YEAR\', \'31Dec1996\'d, \'1Jan1998\'d)
计算1996年12 月31日到1998年1月1日经过的年间隔的个数,结果得2,尽管这两个日期之间实际只隔1年。
其它日期和时间函数还有DATE、TODAY、DATETIME、DATEJUL、JULDATE、HOUR、MINUTE、SECOND 、TIME、TIMEPART等。
sas 取月或周的第一或最后一天
data _null_;
m1=intnx(\'month\',today(),0,\'E\');
m2=intnx(\'month\',today(),0,\'B\');
w1=intnx(\'week\',today(),0,\'E\');
w2=intnx(\'week\',today(),0,\'B\');
format m1 m2 w1 w2 date9.;
put m1 m2 w1 w2;
run;
例:
%let filedate =\'20Nov2010\'d;
data _null;
sdate=\'16Jan2011\'d;
edate=\'16feb2011\'d;
actual=datdif(sdate, edate, \'act/act\');
days360=datdif(sdate, edate, \'30/360\');
conn=\'01feb2011:8:45\'dt;
servdate=datepart(conn);
in_3m=INTNX(\'MONTH\',&filedate,-3);
in_6m=INTNX(\'MONTH\',&filedate,-6);
in_12m=INTNX(\'MONTH\',&filedate,-12);
intck_day=INTCK(\'DAY\',sdate,&filedate);
put servdate worddate.;
put actual= days360=;
format sdate yymmdd10.;
format edate yymmdd10.;
format servdate yymmdd10.;
format in_3m yymmdd10.;
format in_6m yymmdd10.;
format in_12m yymmdd10.;
run;
proc print data=_null;
run;
result:
sdate edate actual days360 conn servdate in_3m in_6m in_12m intck_day
2011-01-16 2011-02-16 31 30 1612169100 2011-02-01 2010-08-01 2010-05-01 2009-11-01 -57
继续阅读与本文标签相同的文章
迩文基因检测:了解孩子的特长比强迫学习更重要!
高速精密冲压技术的特点及典型应用
-
阿里云 Linux 内核优化实战(sysctl.conf 和 ulimits )
2026-05-18栏目: 教程
-
深入理解计算机系统cp1:存储单位与编码
2026-05-18栏目: 教程
-
30天销售额4万,淡季干洗店小程序如何逆流而上?
2026-05-18栏目: 教程
-
小程序十大利剑,“割”新餐饮业
2026-05-18栏目: 教程
-
有一种糖叫语法糖【6】IOT实践之小组小组分小组
2026-05-18栏目: 教程
