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

如何在SAS PROC SQL中将日期列转换为年月整数格式?

在SAS PROC SQL中生成YYYYMM格式的整数日期列

要将date_sale列(显示格式为MM/DD/YYYY)转换为YYYYMM格式的整数列,分两种场景处理:

场景1:date_sale是SAS日期型变量

SAS日期型变量本质存储的是从1960年1月1日起的天数,只是显示为MM/DD/YYYY格式。直接用YEAR()和MONTH()函数提取年月后计算:

PROC SQL;
   CREATE TABLE work.sales AS 
   SELECT t1.quantity, 
          t1.value, 
          t1.date_sale, 
          t1.segmento,
          t1.date_canceling,
          YEAR(t1.date_sale)*100 + MONTH(t1.date_sale) AS date_i_want
      FROM wws.table_sale t1;
QUIT;

YEAR()提取年份(如2023),MONTH()提取月份(如1),乘100后相加直接得到202301这类整数。

场景2:date_sale是字符型变量

先通过INPUT()函数将字符转成SAS日期值,再按上述逻辑处理:

PROC SQL;
   CREATE TABLE work.sales AS 
   SELECT t1.quantity, 
          t1.value, 
          t1.date_sale, 
          t1.segmento,
          t1.date_canceling,
          YEAR(INPUT(t1.date_sale, MMDDYY10.))*100 + MONTH(INPUT(t1.date_sale, MMDDYY10.)) AS date_i_want
      FROM wws.table_sale t1;
QUIT;

MMDDYY10.是匹配MM/DD/YYYY格式的输入格式,确保字符能正确转成SAS日期值。

通用兼容写法

不管原变量是日期型还是字符型,都可以用格式转换后转整数的方式实现:

PROC SQL;
   CREATE TABLE work.sales AS 
   SELECT t1.quantity, 
          t1.value, 
          t1.date_sale, 
          t1.segmento,
          t1.date_canceling,
          INPUT(PUT(INPUT(t1.date_sale, MMDDYY10.), YYMMN6.), 6.) AS date_i_want
      FROM wws.table_sale t1;
QUIT;
  • INPUT(t1.date_sale, MMDDYY10.):统一将输入转成SAS日期值(原变量是日期型时此步骤也不会报错)
  • PUT(..., YYMMN6.):将日期值转成YYYYMM格式的6位无分隔符字符
  • INPUT(..., 6.):将字符转成整数类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:23:14