至今SAS proq sql中的字符

问题描述 投票:0回答:2

我有下面观察到的sql表列:

AB_191007_01
AB_190930_02

我想将此列转换为格式为yyyy-mm-dd的另一列中的日期。

proc sql;
CREATE TABLE result AS
SELECT input(compress(col_name,"AB_"), ANYDTDTE6.) AS col_date  format=yymmdd6.
FROM work.test
;quit;

先前的代码使我有些奇怪的结果:

2009-06-18
1926-12-17
1926-12-17
2009-06-18
2006-08-18
2016-05-18
2011-03-19
1926-12-17
sql sas proc-sql
2个回答
0
投票

[假设您要将字符AB_191007_01转换为日期2019-10-07,请使用SCAN函数获取下划线之间的中间日期,然后输入yymmdd6。然后,您可以根据需要更改格式(我使用yymmdd10。)。

SELECT input(scan(col_name,2,"_"),yymmdd6.) AS col_date format yymmdd10.

0
投票
  1. ANYDTDTE信息格式取决于您的DATESTYLE选项(这又取决于LOCALE),因此您应该指定它或使用其他固定位置的信息格式,例如yymmdd6
  2. 将26年读为1926年或2026年取决于您的YEARCUTOFF选项。
  3. 编写的[compress()函数还会压缩第二个_,因此向input()提供的字符比预期的多(尽管它不会影响.6格式)。
© www.soinside.com 2019 - 2024. All rights reserved.