You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将yyyymm格式日期转为SAS date9.格式并拆分年月变量?

SAS日期转换与变量拆分方案

假设你的输入变量名为input_date,分两种常见情况处理:

情况1:输入为字符型变量(如值为"202407")

转换为date9.格式的日期显示

先将字符型的YYYYMM格式转换为SAS日期值(默认取当月第一天),再应用date9.格式实现"JUL2024"的显示效果:

data want;
    set have;
    /* 拼接当月第一天的日期字符串,转为SAS日期值 */
    sas_date = input(input_date || '01', yymmdd8.);
    /* 用date9.格式格式化显示 */
    format sas_date date9.;
run;

拆分月份和年份

两种实现方式可选:

data want;
    set have;
    /* 方式1:直接从字符变量截取后转数字 */
    year_var = input(substr(input_date, 1, 4), 4.);
    month_var = input(substr(input_date, 5, 2), 2.);
    
    /* 方式2:基于转换后的SAS日期值提取(更适合后续日期运算) */
    sas_date = input(input_date || '01', yymmdd8.);
    year_var2 = year(sas_date);
    month_var2 = month(sas_date);
run;

情况2:输入为数字型变量(如值为202407)

转换为date9.格式的日期显示

先将数字转为字符型,再按字符型的逻辑处理:

data want;
    set have;
    /* 数字转字符后拼接当月第一天,转为SAS日期值 */
    sas_date = input(put(input_date, 6.) || '01', yymmdd8.);
    format sas_date date9.;
run;

拆分月份和年份

同样提供两种高效方式:

data want;
    set have;
    /* 方式1:用数学运算直接拆分 */
    year_var = floor(input_date / 100);
    month_var = mod(input_date, 100);
    
    /* 方式2:基于SAS日期值提取 */
    sas_date = input(put(input_date, 6.) || '01', yymmdd8.);
    year_var2 = year(sas_date);
    month_var2 = month(sas_date);
run;

注意事项

  • date9.是SAS的日期显示格式,必须先将YYYYMM格式的输入转换为SAS标准日期值(即从1960年1月1日起的天数)才能生效,因此需要补充当月第一天的信息。
  • 直接截取/数学运算拆分变量的效率更高;若后续需要进行日期加减、季度判断等操作,建议先转为SAS日期值再提取月份和年份,逻辑更严谨。

内容的提问来源于stack exchange,提问作者NewUsr_stat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:28:16