2017-02-13 6 views
1

У меня возникла проблема при загрузке дат SAS в Teradata. Формат даты в SAS был «01Jan2017'D», и после загрузки даты в teradata отобразится строка с номером 23050, но не в формате даты. И я использовал функцию put перед загрузкой, чтобы изменить формат в SAS, а также после загрузки. Я использовал функцию формата даты даты в Teradata, но ни одна из них не работала.sas load в Teradata Формат даты

У кого-нибудь есть решение для этого?

Большое спасибо за ответ!

+0

Попробуйте без функции put. Обычно мне не нужно ничего делать, чтобы загружать даты SAS, если поле даты фактически не является датой. Конечно, я полагаю, что это зависит от того, какой метод вы используете для загрузки данных. –

+1

Можете ли вы опубликовать подробный пример того, как вы создали переменную SAS и как вы ее загрузили в Teradata? Держите его на минимальном примере, который можно использовать для воссоздания проблемы. – Tom

ответ

1

Вы используете 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 должны быть одинаковыми.

Смежные вопросы