Это мои данные (извините за отсутствие сценария, это просто за c создание таблицы из мс sql):
testdb.testtable
id - numeric
date_from - numeric (datetime from mssql)
date_to - numeric (datetime from mssql)
base_id - numeric
base_id2 - string (length 64)
То, что я пытался сделать, было:
proc sql;
update testdb.testtable tt
set base_id2 = CATX('_',
('data from other table'),
put(datepart(date_from),yymmddn10.),
put(datepart(date_to),yymmddn10.),
put(base_id,z4.)
)
where (....)
;
quit;
И я получаю эту ошибку:
The width value for YYMMDDN is out of bounds. It should be between 2 and 8.
The width value for YYMMDDN is out of bounds. It should be between 2 and 8.
Что я действительно не понимаю, так это то, что когда я использую формат с разделителями, YYMMDD10., Он работает.
Когда я запускаю:
proc sql;
select datepart(date_from) format=yymmddn10. from testdb.testtable;
quit;
Возвращает 20191227 - Отлично. Когда я запускаю
proc sql;
select put(datepart(date_from),yymmddn10.) from testdb.testtable;
quit;
Сбой с той же ошибкой.
Что мне не хватает?