【发布时间】:2016-01-11 07:42:49
【问题描述】:
我需要从当前时间以毫秒为单位获取间隔 7 天的时间戳。我尝试使用 now() date_sub 但对我不起作用。我们如何在蜂巢中做到这一点。在我的查询中,我需要确切的间隔 current_timestamp(unix) 和 7 天的间隔。还有什么规定可以选择像UTC + 5:30这样的时区吗?
【问题讨论】:
标签: mysql sql hive unix-timestamp hiveql
我需要从当前时间以毫秒为单位获取间隔 7 天的时间戳。我尝试使用 now() date_sub 但对我不起作用。我们如何在蜂巢中做到这一点。在我的查询中,我需要确切的间隔 current_timestamp(unix) 和 7 天的间隔。还有什么规定可以选择像UTC + 5:30这样的时区吗?
【问题讨论】:
标签: mysql sql hive unix-timestamp hiveql
我在 HIVE 中找不到有关基于毫秒的时间计算的信息。
unix_timestamp() 是当前时间戳,但它没有毫秒数。
偏移量为 7 天*24 小时/天*3600 秒/小时 = 604800 毫秒
所以当前时间加上 7 天的时间戳将是 unix_timestamp() + 604800
UTC 部分比较复杂;您可以使用 to_utc_timestamp,给它您计算的时间戳,以及它来自的时区(作为日期)。它将返回一个日期字符串,您将通过 unix_timestamp() 传递它
换句话说,假设它来自 PST,你应该使用:
select unix_timestamp(to_utc_timestamp(from_unixtime(unix_timestamp() + 604800), 'PST')) from dual;
在此处查看文档:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
【讨论】: