提问人:Ara_V 提问时间:11/2/2023 最后编辑:Stu SztukowskiAra_V 更新时间:11/2/2023 访问量:33
SAS 上的 SQL 将日期列格式 01/01/2023 转换为整数列格式 202301
SQL on SAS Convert date column format 01/01/2023 into a integer column format 202301
问:
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;
我不知道从哪里开始。
答:
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
现在这在数学上很有趣
下一个:如何跳过一天而不是闰年
评论