Я хотел бы получить дату и время отдельно от DATETIME.формат - PullRequest
0 голосов
/ 08 сентября 2018

Я бы хотел получить только дату и время отдельно от 01JAN13:08:29:00

Формат и информация доступны в наборе данных:

Date    Num     8   DATETIME.(format)   ANYDTDTM40(informat)

И если я запускаю datepart() на 01JAN13:08:29:00, я получаю вывод как 19359 (я этого не хочу.)

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

На самом деле 19 359 - это именно то значение, которое вы хотите.Вы начали с количества секунд с 1960 года и преобразовали его в число дней с 1960 года.

data x ;
  dt = '01JAN13:08:29:00'dt ;
  date = datepart(dt);
  time = timepart(dt);
  put (dt date time) (=);
run;

Результаты

dt=1672648140 date=19359 time=30540

Вам просто нужно прикрепить формат к новой переменнойтак что SAS отобразит значение в формате, который распознают люди.Вы можете использовать такой формат, как DATE9.чтобы оно показывало 19 359 как 01JAN2013.Точно так же вам нужно прикрепить формат к временной части, чтобы он печатался в формате, который будет восприниматься человеком как время.

format date date9. time time8. ;
0 голосов
/ 08 сентября 2018

Функция DATEPART извлекает значение даты из значения даты и времени. Значение даты, которое вы видели, это просто число. формат даты должен применяться к переменной, содержащей значение даты. Базовые переменные SAS имеют только два типа значений: символьные и числовые.

data want;
  now_dtm = datetime();
  now_dt = datepart(now_dtm);
  now_dt_unformatted = now_dt;

  format now_dtm datetime.;
  format now_dt date9.;  * <----- this is what you need, format stored in data set header information;
run;

proc print data=want;
run;

* you can change the format temporarily during a proc step;
proc print data=want;
  format now_dt yymmdd10.;             * <---- changes format for duration of proc step;
  format now_dt_unformatted mmddyy10.;
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...