我有一个配置单元表,其中包含一个名为timestamp的列。时间戳是从java生成的bigint字段 System.currenttimemillis()
. 我想应该是utc。现在我正在尝试选择1小时前的记录。我知道在mysql中,您可以执行以下操作:
SELECT * FROM table WHERE datetimefield >= DATE_SUB(NOW(), INTERVAL 1 HOUR)
在 hive 里,好像 NOW()
不见了。我找了些东西 unix_timestamp()
. 我应该可以通过执行 unix_timestamp()*1000
.
因此,如果我想获取1小时前的记录,我会考虑做如下操作:
SELECT * FROM hivetable WHERE datetimefield >= (unix_timestamp()*1000-3600000);
有没有人能建议这是解决这个问题的正确方法?如果我想选一天前的呢?转换成毫秒似乎不太方便。任何帮助或建议阅读将不胜感激。事先谢谢你的帮助。
1条答案
按热度按时间xmd2e60i1#
对
unix_timestamp()
获取自unix时代以来经过的秒数。您可以减去60601000毫秒,然后比较字段以获得所需的记录。对于hive 1.2.0及更高版本,您可以使用
current_timestamp
```select *
from hivetable
where
datetimefield >= ((unix_timestamp()*1000) - 3600000);