data sample_data;
infile cards;
input type $ id amount count tdate1 $ tdate2 $;
cards ;
Payment 335861 36416 5 41641 41648
Payment 335861 85610 8 41641 41648
Payment 335861 99214 156 41641 41648
;
run;
data out_data;
set sample_data;
format date1 date2 yymmdds10.; /* format=display number (of days) as DATE */
date1 = input(tdate1, 5.);/* conversion from text to number
(assuming it's a SAS date value=number of days from 1jan1960 */
date2 = input(tdate2, 5.);
datediff = date1 - date2; /* calculate date difference */
run;
示例假设您的“日期”来自 SAS,这意味着它是自 1960 年 1 月以来的天数。这意味着值“41641”是 3jan2074。
如果数字来自不同的数据源并且含义不同,您必须对数字/日期进行一些更正。
例如,在 excel '41641' 中是 2.1.2014(它是自 1jan1900 + 1 以来的天数)。在这种情况下所需的转换 + 调整将是:
date1 = input(tdate1, 5.) - ('1jan1960'd - '1jan1900'd) - 2;
date2 = input(tdate2, 5.) - ('1jan1960'd - '1jan1900'd) - 2;