Hive from_unixtime() генерирует неподходящую дату
Я использую запрос для создания временной метки из фиктивной таблицы с именем dual. Но дата, возвращаемая из таблицы, кажется неверной.
select String(max(max_lid_date)) as prev_reqline_max_lid_date,from_unixtime(unix_timestamp(),'YYYY-MM-DD hh:mm:ss') as job_start_date,from_unixtime(unix_timestamp(),'YYYY-MM-DD 00:00:01') as pull_to_date from xxcss_ktn_req_line_detail_log;
Результат запроса:
prev_reqline_max_lid_date job_start_date pull_to_date
1970-01-01 00:00:00 2015-12-349 01:47:52 2015-12-349 00:00:01
Структура двойного стола:
hive (smart_advisor)> desc dual;
OK
col_name data_type comment
id string
Структура таблицы улья, из которой извлекается дата
hive (smart_advisor)> desc xxcss_ktn_req_line_detail_log;
OK
col_name data_type comment
job_start_date timestamp
job_end_date timestamp
pull_from_date timestamp
pull_to_date timestamp
min_lid_date timestamp
max_lid_date timestamp
record_count bigint
Нужна помощь в решении проблемы с датой в столбцах pull_to_date и job_start_date. Это журнал для моей работы.
Таблица xxcss_ktn_req_line_detail_log содержит только одну запись
hive (smart_advisor)> select * from xxcss_ktn_req_line_detail_log;
OK
xxcss_ktn_req_line_detail_log.job_start_date xxcss_ktn_req_line_detail_log.job_end_date xxcss_ktn_req_line_detail_log.pull_from_date xxcss_ktn_req_line_detail_log.pull_to_date xxcss_ktn_req_line_detail_log.min_lid_date xxcss_ktn_req_line_detail_log.max_lid_date xxcss_ktn_req_line_detail_log.record_count
NULL NULL NULL NULL NULL 1970-01-01 00:00:00 0
1 ответ
Вы передаете неправильную строку формата. В частности, вы используете заглавную D (день в году) вместо строчной буквы "d". Вы, вероятно, также хотите использовать заглавную H вместо строчной h, поскольку в нижнем регистре это время 12 часов утра / вечера.
Попробуй вместо
hive> select from_unixtime(unix_timestamp(),'yyyy-MM-dd 00:00:01')
from single_customer;
OK
2015-12-15 00:00:01
hive> select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')
from single_customer;
OK
2015-12-15 08:25:22
Обратите внимание, что "гггг-ММ-дд ЧЧ: мм: сс" является значением по умолчанию, поэтому вы можете просто использовать
hive> select from_unixtime(unix_timestamp()) from single_customer;
OK
2015-12-15 08:27:16
Hive использует Java для форматов дат, поэтому вы должны проверить это: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html