2015-08-07 4 views
-3

Я получил набор данных SAS в формате txt от клиента. Но клиент не изменил формат даты SAS на mm/dd/yyyy или yyyy-MM-dd. Как SAS использует секунды, начиная с 1 января 1960 года, дата приходит как:SAS внутренний формат даты в yyyy-MM-dd в HIVE

| response_dt | 
+---------------- 
| 19724  | 
| 19673  | 
| 19698  | 
| 19738  | 
| 19738  | 

Я хочу, чтобы преобразовать его в формат гггг-ММ-ДД в улье. Просьба помочь

+0

Даты SAS - это количество дней с 1 января 1960 года. Собираетесь ли вы обрабатывать эти данные в SAS или что-то еще? Если вы обрабатываете SAS и у вас уже есть эти значения в наборе данных SAS, вы можете просто форматировать response_dt ddmmyy10. – Quentin

+2

waht ты пробовал? Формат, атрибут, что-то еще? – kl78

+1

Вы должны иметь возможность легко найти решение этого путем поиска. –

ответ

0

Просто читайте в цифрах. Они действительно дней с 1 января 1960 года

Затем назначить формат для них в одном из нескольких способов, как

Data myData; 
    set myData; 
    format response_dt ddmmyy8.; 
run; 

Если набор данных огромен, рассмотреть вопрос об использовании proc datasets

+0

Спасибо, Дирк, я извиняюсь, что раньше не упоминал об этом ... Я должен сделать это в улье –

0

Даты Sas - это дни с 1jan1960.

Я сделал это wiki.

Может ли кто-нибудь добавить правильную функцию для добавления дней к дате в улье?

+0

date_add ('2008-12-31', 1) = '2009-01-01' (from https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions) –

+0

Нам нужен обратный, что-то вроде date_diff. И вы должны иметь возможность редактировать ответ: это wiki –

+0

Честно говоря ** Я не заинтересован в этой вики ... но ссылка выше охватывает все виды функций даты, включая * date_diff *. Помогите себе и получайте удовольствие B-) –

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