配置单元时间转换问题

ve7v8dk2  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(408)

我们从src获得时间“2019-11-03 01:01:00”。2019-11-03是白天的节光日。让我们说这是结束时间。我们在配置单元表start\u 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" 有人能帮忙吗!

nwo49xxi

nwo49xxi1#

您正在访问此问题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}'

相关问题