Как преобразовать / обновить даты из формата ГГГГ-ММ-ДД в формат ДДМММГГГГ? - PullRequest
0 голосов
/ 12 февраля 2019

Я относительно новичок в кодировании, но начал изучать его на моей новой работе.В настоящее время я пытаюсь получить два столбца в двух разных таблицах, чтобы иметь одинаковый формат даты.Первый формат DDMMMYYYY (т. Е. 01 января2019), второй формат YYYY-MM-DD (т. Е. 2019-01-01).Я хотел бы изменить 2-й на 1-й формат, но я не видел никаких советов в сети для этого.Любая помощь будет принята с благодарностью, поскольку конечной целью является объединение этих двух таблиц в этом столбце даты.

Я предполагаю, что форма кода будет выглядеть примерно так?

update table2
set date = ???????;

Ответы [ 3 ]

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

Предполагая, что тип переменной - числовой с форматом даты, это может быть так же просто, как изменить применяемый формат.Если это символьная переменная, вам нужно выполнить преобразование типа.

Вы можете применить формат в шаге данных или изменить существующий формат, используя PROC DATASETS.Смотрите примеры каждого из них ниже.

*change format as part of a data step;
data ibm;
set sashelp.stocks;
format date yymmddd10.;
run;

proc print data=ibm (obs=5);
run;

*change format without modifying data set;
proc datasets lib=work nodetails nolist;
modify ibm;
format date worddate.;
run;

proc print data=ibm (obs=5);
run;
0 голосов
/ 12 февраля 2019

В SAS ФОРМАТ - это просто инструкция для отображения значения.Так что если у вас есть одна переменная с DATE9.спецификация формата прилагается и другая с YYMMDD10.присоединенный формат, фактическое сохраненное значение не изменяется.

Вы можете использовать оператор FORMAT, чтобы изменить формат отображения, используемый с переменной.Вы можете просто сделать это в точке, где вы отображаете данные.Скажите в шаге PROC.

proc print data=a ;
   format date_vara yymmdd10.;
run;
proc print data=b ;
   format date_varb yymmdd10.;
run;

Или вы можете прикрепить формат в определении набора данных.Тогда по умолчанию SAS будет использовать это для форматирования.

data new;
  set a b ;
  format date_vara date_varb yymmdd10.;
run;

Вы даже можете изменить метаданные набора данных, чтобы изменить формат, прикрепленный к переменной.

proc datasets lib=work nolist;
  modify a;
  format date_vara yymmdd10.;
  run;
quit;

PS Если вы хотитедобавьте литералы даты (константы) в свой код SAS, тогда вам нужно всегда использовать строки в стиле, который может прочитать информатор DATE.where date_varb >'01JAN2019'd ; Независимо от того, какой формат отображения прикреплен к переменной.

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

Столбец типа DateTime нельзя форматировать определенным образом.Вполне возможно, что один или оба столбца относятся к типу 'varchar' или 'nvarchar'.Чтобы использовать их в качестве правильных столбцов «DateTime», вы можете добавить новый столбец типа «DateTime», а затем скопировать в него значения из старого столбца «varchar» как «DateTime».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...