[英]HIVE Time conversion issue
我们从 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}'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.