Вы используете SAS/Access to Teradata? Если это так, он должен автоматически определять переменную как дату в Teradata. Давайте сделаем небольшую таблицу в SAS. Обратите внимание, что привязка действительного формата даты SAS имеет решающее значение для SAS, чтобы понять, что ваша переменная имеет значения даты.
data have ;
mydate = '01JAN2017'd;
format mydate date9. ;
run;
Теперь давайте загрузим его в новую таблицу Teradata.
libname td teradata ..... ;
data td.mytable ;
set have;
run;
Теперь давайте прочитаем его и посмотрим, что в нем находится.
proc print data=td.mytable;
run;
Теперь, если вы уже загрузили много данных в Teradata и значения выглядят как целое число дней с 1/1/1960, которая, как магазины SAS даты внутри, то это легко расчет в Teradata, чтобы преобразовать это в дату. Просто добавьте его к дате '1960-01-01'. Попробуйте запустить этот запрос на вашем сервере TD.
select DATE '2017-01-01' date1, date '1960-01-01' + 20820 date2
И DATE1, и DATE2 должны быть одинаковыми.
Попробуйте без функции put. Обычно мне не нужно ничего делать, чтобы загружать даты SAS, если поле даты фактически не является датой. Конечно, я полагаю, что это зависит от того, какой метод вы используете для загрузки данных. –
Можете ли вы опубликовать подробный пример того, как вы создали переменную SAS и как вы ее загрузили в Teradata? Держите его на минимальном примере, который можно использовать для воссоздания проблемы. – Tom