【发布时间】:2018-06-22 17:17:58
【问题描述】:
我有一个 hive 表,其中包含一个名为 timestamp 的列。时间戳是从 java System.currenttimemillis() 生成的 bigint 字段。我想它应该是UTC。现在我正在尝试选择 1 小时前的记录。我知道在 MySQL 中你可以这样做:
SELECT * FROM table WHERE datetimefield >= DATE_SUB(NOW(), INTERVAL 1 HOUR)
在 hive 中,NOW() 似乎丢失了。我做了一些搜索,找到了unix_timestamp()。我应该能够通过 unix_timestamp()*1000 获得当前的 UTC 时间(以毫秒为单位)。
因此,如果我想获取 1 小时前的记录,我正在考虑执行以下操作:
SELECT * FROM hivetable WHERE datetimefield >= (unix_timestamp()*1000-3600000);
有人可以建议这是否是解决此问题的正确方法吗?另外,如果我想像 1 天前一样选择呢?将其转换为毫秒似乎不方便。任何帮助或建议的阅读材料将不胜感激。提前感谢您的帮助。
【问题讨论】:
标签: hive hiveql unix-timestamp sql-timestamp