SAS 上的 SQL 将日期列格式 01/01/2023 转换为整数列格式 202301

SQL on SAS Convert date column format 01/01/2023 into a integer column format 202301

提问人:Ara_V 提问时间:11/2/2023 最后编辑:Stu SztukowskiAra_V 更新时间:11/2/2023 访问量:33

问:

SAS 上的 SQL 我需要创建一个新列并将 01/01/2023 的日期格式date_sale列转换为整数列格式202301

我的专栏

日期格式 |整数格式

date_sale date_i_want
01/01/2023 202301
01/02/2023 202302

这是我的代码:

PROC SQL;
   CREATE TABLE work.sales AS 
   SELECT t1.quantity, 
          t1.value, 
          t1.date_sale, 
          t1.segmento,
      t1.date_canceling
          
      FROM wws.table_sale t1
      
QUIT;

我不知道从哪里开始。

SQL 日期 SAS

评论


答:

1赞 Stu Sztukowski 11/2/2023 #1

数据步骤将使它更易于使用。将日期的各个部分组合在一起,并在必要时添加前导零。让我们创建示例数据:

data have;
    do date = '01JAN2023'd to '31JAN2023'd;
        output;
    end;

    format date mmddyy10.;
run;

现在让我们创建我们想要的值:

data want;
    set have;
    date_want = input(cats(year(date), put(day(date), z2.)), 8.);
run;

从内到外分解每件作品:

day(date)- 获取日期的日期部分

put(day(date), z2.)- 将前导零添加到日期的日期部分

cats(year(date), put(day(date), z2.))- 像这样连接年份和日期部分:202301

input(cats(year(date), put(day(date), z2.)), 8.)- 将整个字符串转换为整数

如果你愿意,你也可以用 SQL 来做到这一点。

PROC SQL;
   CREATE TABLE work.sales AS 
   SELECT input(cats(year(t1.date), put(day(t1.date), z2.)), 8.) as date_want, 
          t1.quantity, 
          t1.value, 
          t1.date_sale, 
          t1.segmento,
      t1.date_canceling
          
      FROM wws.table_sale t1
      
QUIT;
1赞 Reeza 11/2/2023 #2

老了但仍然有效,可以在 SQL 或数据步骤中使用

year(t1.date)*100+month(t1.date) as date_i_want

评论

1赞 Stu Sztukowski 11/2/2023
现在这在数学上很有趣