sas中intck函式計算日期天數間隔等妙用
大家肯定知道自己幾歲,度過了多少個季節。那多少人知道自己從出生到現在有多少個月,多少個周、多少天嗎?
sas可以幫你解決,用intck函式,將你的出生日期和今天的日期放在下列函式就ok!可以應用到客戶的入網時長等計算中。
1.利用intck函式
data a;
format x date9. y date9.;
x='05dec1985'd;y='18apr2017'd;
year=intck('year',x,y);
qtr=intck('qtr',x,y);
month=intck('month',x,y);
week=intck('week',x,y);
day=intck('day',x,y);
put year= qtr= month= week= day=;
run;
改進優化後:
data aaa;
input birthday mmddyy8.;
format birthday mmddyy8.;
bday=put(birthday,mmddyy8.);
today=put(today(),mmddyy8.);
age=intck('year',birthday,today()); /*會四捨五入年齡*/
age1 = floor
((intck('month',birthday,today())
- (day(today()) < day(birthday))) / 12);
cards;
01251956
09021968
02181948
10271999
;run;
2.利用巨集
%macro yourdays(birthday=);
data _null_;
file print;
y=today();
x=&birthday;
year=intck('year',x,y);
qtr=intck('qtr',x,y);
month=intck('month',x,y);
week=intck('week',x,y);
day=intck('day',x,y);
put "你在這個世界上活了"year"年,"month"月," week"星期," day"天。";
run;
%mend;
%yourdays(birthday='08jun1988'd);
改進優化後:
%macro yourdays(birthday=);
ods listing close;
ods html;
data _null_;
file print;
time=time();
y=today();
x=&birthday;
year=intck('year',x,y);
qtr=intck('qtr',x,y);
month=intck('month',x,y);
week=intck('week',x,y);
day=intck('day',x,y);
put 100*'*';
put "現在是"y:yymmdd10."號" time:time5."分。";
put;
put "截止到目前,你在這個世界上活了"year"年," month"個月," week"個星期," day"天。";
put;
put "請珍惜你生命中的每一天!";
put;
put 100*'*';
run;
ods html close;
ods listing;
%mend;
/*將以下日期改為你的生日,直接執行全部程式*/
%yourdays(birthday='08jun1988'd);
SAS函式 日期函式
一 日期的合併 將月 日 年合併為乙個日期格式的變數或值。mdy 月,日,年 注意 月,日,年的順序不能變。二 日期的差值 計算兩個日期之間以年為單位的差值 yrdif 開始日期,結束日期,計算依據 計算兩個日期之間以天為單位的差值 datdif 開始日期,結束日期,計算依據 計算依據 actual...
SAS常用日期和時間函式簡介
sas常用日期和時間函式有 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...
日期類函式(計算日期)
includeusing namespace std int runnian int year 判斷該年是否是閏年 int riqi int month,int year 因為每個月的的天數不一樣,所以用乙個函式進行判斷 else day 30 else return day class date ...