Hql:如何将时间缩短30分钟

时间:2018-06-15 14:30:38

标签: group-by hive hiveql

我需要一个Hql查询,它将输出时间分组为30分钟。我做了很多研究我只在Sql中发现了查询,我尝试了以下几个:

 SELECT date_format(`date`, "YYYY-MM-dd hh:00:00.000 aa"),dateadd(minute,(datediff(minute,0,a.dt)/30)*30,0) FROM flux GROUP BY dateadd(minute,(datediff(minute,0,a.dt)/30)*30,0)

它给了我以下错误:

Invalid function dateadd

我也试过这个:

 SELECT  date_format(`date`, "YYYY-MM-dd hh:00:00.000 aa") FROM flux GROUP BY second(`date`)%('30*60')

但它给了我以下错误:

 Error encountered near token ''30*60''

如果您对如何解决我的问题有任何想法请帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

将其转换为秒并将其除以30 * 60并使用group by。

SQLfiddle

select from_unixtime(round(unix_timestamp(ts)/1800)*1800),count(*) as count_30,
from flux
group by round(unix_timestamp(ts)/1800)