Конвертировать символьную дату в SAS - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть символьная переменная, которая содержит такие даты, как (длина строки 30):

Mon Jul 24 02:48:17 -0700 2017
------------------------------ ruler
123456789012345678901234567890
         1         2         3

Как извлечь дату (дату, месяц, год) и сохранить ее в виде числовой даты.Я знаю, как это сделать, используя функцию SUBSTR, а затем объединить все вместе.Но я хочу узнать более простой и быстрый способ.Я попытался использовать ANYDTDTE informat, чтобы прочитать его, но получил пустые значения.Дайте мне знать, если есть какой-нибудь более простой способ прочитать эту дату.

1 Ответ

0 голосов
/ 07 февраля 2019

Вам нужна только дата?Или вам нужно получить часть времени тоже?Функция SCAN () может сделать это проще.

data test;
  str='Mon Jul 24 02:48:17 -0700 2017';
  date=input(cats(scan(str,3),scan(str,2),scan(str,-1)),date9.);
  format date date9.;
  datetime=input(cats(scan(str,3),scan(str,2),scan(str,-1),':',scan(str,4,' ')),datetime20.);
  format datetime datetime19.;
run;

Результат:

str=Mon Jul 24 02:48:17 -0700 2017 
date=24JUL2017 
datetime=24JUL2017:02:48:17
...