gpt4 book ai didi

hadoop - HIVE时间转换问题

转载 作者:行者123 更新时间:2023-12-02 19:13:16 25 4
gpt4 key购买 nike

我们正在从src“2019-11-03 01:01:00”获得时间。 2019-11-03是日光节约日。
可以说这是end_time。 hive 表start_time中还有另一列。
得出开始时间的逻辑是:start_time = (end_time- 3600)
问题 ##:

当我们在作业执行过程中使用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"有人可以帮忙!

最佳答案

您遇到了这个问题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}'

关于hadoop - HIVE时间转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60878502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com