Преобразование ГГГГММДД8 в формат ДАТА9? - PullRequest
0 голосов
/ 30 января 2020

Мне нужно преобразовать строку в формате ГГГГММДД в ​​формат нумерации c ДАТА9 в SAS.

Я могу преобразовать строку в формат ГГГГММДД8, но сейчас не могу преобразовать ее в формат DATE9. Я подумал, что это будет просто вставить оператор формата для переменной и установить его как DATE9, поскольку он уже находится в числовом формате c, но при этом просто появляются звездочки.

I ' Я пытался воспроизвести пример кода. Набор данных date1 предоставляется. Я преобразовал его в ГГГГММДД8. согласно шагу 2. Это шаг 3, я не могу приступить к работе. Я пробовал принять решения, предоставленные ответами на подобные вопросы, но я не могу заставить его работать. Так что я могу делать что-то не так.

Короче говоря, мне нужна либо рабочая версия шага 3, либо упрощенный шаг 2, который преобразует строку в date9 за один шаг.

* STEP 1 - Provided;
data date1;
    FORMAT file_date $8.;
    file_date = '20191209';
run;

* Step 2 - Convert to YYYYMMDD8.;
PROC SQL;
    CREATE TABLE date2 AS
    SELECT INPUT(file_date,yyyymmdd8.) AS file_date2 FORMAT YYYYMMDD8.
    FROM date1;

* Step 3 - Convert to DATE9. (Results in asterisks in place of the actual date);
DATA date3;
    SET date2;
    FORMAT file_date3 date9.;
    file_date3 = file_date2;
RUN;

1 Ответ

1 голос
/ 30 января 2020

Проблема здесь в том, что формат yyyymmdd не существует, это просто yymmdd. Для простоты работы с датами SAS следует использовать информацию anydtdte. Таким образом, шаг 2 можно упростить до следующего:

proc sql;
create table date2 as
select input(file_date,anydtdte8.) as file_date2 format=date9.
from date1;
quit;
...