2

我需要有关创建查询的帮助。我有下表。

Name(String) | Capacity(String) | Time(BIGINT)

我想得到Time最后一小时的行。我怎样才能做到这一点?

我尝试关注但没有奏效。

select * 
from table1 
where Time > (unix_timestamp() - 60*60*1000);

请帮我。

4

2 回答 2

3

问题解决了。发生这种情况是因为 unix_timestamp() 是以秒为单位给出的,而我没有注意到这一点。如下更改代码有效。

select * from table1 where Time > (unix_timestamp()*1000 - 60*60*1000);

谢谢大家。

于 2013-05-15T04:58:57.870 回答
1

我不认为有一个功能。

一种方法是,您必须在 shell 脚本中从 unix 中花费数小时

select * 
from table1 
where Time > ${hiveconf:onehourago};

将上述代码写入文件

并在 shell 脚本中调用上述文件,如下所示。

通过使用获取 hourfromunix date -d "1 hour ago" +%Y%m%d%H%M%S

Hive -hiveconf onehourago=$hourfromunix -f filename.hql
于 2013-04-24T11:54:18.863 回答