SAS中将常规日期格式转换为1960年1月1日起累计天数的咨询
SAS DDMMYYYY格式日期转1960年基准累计天数方法
你提供的21112021属于DDMMYYYY(日/月/4位年)格式的日期值,SAS原生的日期值本身就是以1960年1月1日为0点计算的累计天数,你只需要用输入函数把原始日期值转换成SAS标准日期类型即可:
1 原始数据为字符串类型的处理方案
如果你的日期存储为字符型变量,直接用INPUT函数匹配对应的日期输入格式即可:
/* 示例代码 */ data work.demo; /* 原始字符型日期变量 */ raw_date = '21112021'; /* 用DDMMYY10.输入格式转换为SAS标准日期值 */ sas_serial_date = input(raw_date, ddmmyy10.); /* 可选:如果需要查看转换后的常规日期展示,添加format语句,不需要则省略 */ format sas_serial_date date9.; run;
上述代码中
sas_serial_date如果不指定显示格式,直接输出的就是你需要的累计天数。以示例的2021年11月21日为例,转换后的累计天数为22604,可以自行核验。
2 原始数据为数值类型的处理方案
如果你的原始日期是数值型的21112021,需要先转成字符型再做转换:
data work.demo; /* 原始数值型日期变量 */ raw_date_num = 21112021; /* 先转8位字符,再用INPUT转换为SAS日期值 */ sas_serial_date = input(put(raw_date_num, 8.), ddmmyy10.); run;
注意事项
- 务必使用
ddmmyy系列的输入格式,不要误用mmddyy格式,否则会导致月日顺序颠倒,转换结果错误 - 转换完成后可以临时给变量加
ddmmyy10.格式,查看输出的日期是否和原始值一致,验证转换正确性
内容的提问来源于stack exchange,提问作者zzz247
相关产品推荐
相关产品推荐

