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

如何在SAS中去除日期的日部分?尝试monyy7.格式无效

解决SAS日期去除日部分的问题

首先得明确你的日期变量类型,分两种情况处理:

情况1:变量是SAS数值型日期(底层存的是从1960-01-01起的天数)

你说用monyy7.格式没生效,大概率是没正确应用格式,或者混淆了「显示格式」和「数值转换」:

  • 只是想显示时隐藏日:直接给变量指定monyy7.格式即可,它会把数值日期显示为OCT2019:
    data want;
        set have;
        format your_date_var monyy7.; /* 替换成你的实际变量名 */
    run;
    
    要是想显示更短的OCT19,用monyy5.格式就行。
  • 要是需要把日期转换成当月第一天的数值日期(从底层去掉日信息),用intnx函数:
    data want;
        set have;
        month_start_date = intnx('month', your_date_var, 0, 'b');
        format month_start_date monyy7.;
    run;
    

情况2:变量是字符型日期(比如直接存成01OCT2019字符串)

这种情况直接用格式没用,得先处理字符串或者转成数值型日期:

  • 直接截取字符串:从第3位开始取后面的字符,得到年月部分:
    data want;
        set have;
        month_year_str = substr(your_char_date, 3); /* 结果是OCT2019 */
    run;
    
  • 转成数值型日期再用格式:先把字符转成SAS数值日期,再指定格式:
    data want;
        set have;
        date_num = input(your_char_date, date9.);
        format date_num monyy7.;
    run;
    

为什么monyy7.没生效?

  • 如果是字符型日期: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.23 05:42:08