Проблема конвертации времени в ВИЧ - PullRequest
1 голос
/ 27 марта 2020

Мы получаем время от sr c "2019-11-03 01:01:00". 2019-11-03 день спасения света. допустим, это конец_времени У нас есть еще один столбец в таблице кустов start_time. Logi c для определения времени запуска: start_time = (end_time- 3600)

Issue ##:

Когда мы применяем тот же лог c во время выполнения задания с unix_timestamp(), ниже приведены результаты.

Start_time =
select from_unixtime(unix_timestamp('2019-11-03 01:01:00') - 3600 ,'yyyy-MM-dd HH:mm:ss');
+----------------------+--+
|         _c0          |
+----------------------+--+
| 2019-11-03 01:01:00  |
+----------------------+--+

также

End_time = select from_unixtime(unix_timestamp('2019-11-03 01:01:00') ,'yyyy-MM-dd HH:mm:ss');

+----------------------+--+
|         _c0          |
+----------------------+--+
| 2019-11-03 01:01:00  |
+----------------------+--+

Оба возвращают один и тот же результат. Таким образом, наш start_date = end_date, который не ожидается. Мы хотим End_time = "2019-11-03 00:01:00" Может кто-нибудь помочь!

1 Ответ

0 голосов
/ 27 марта 2020

Вы столкнулись с этой проблемой HIVE-14305

Решением может быть вычисление даты в bash и передача ее вашему сценарию в качестве переменной:

initial_date="2019-11-03 01:01:00"
datesec="$(date '+%s' --date="$initial_date")"
result_date=$( date --date="@$((datesec - 3600))" "+%Y-%m-%d %H:%M:%S")
echo $result_date

#result 2019-11-03 00:01:00

#call your script like this

hive -hiveconf result_date="$result_date" -f script_name

#In the script use '${hiveconf:result_date}'
...