首页 > 解决方案 > Hql:如何将时间缩短 30 分钟

问题描述

我需要一个 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''

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

谢谢你 !

标签: group-byhivehiveql

解决方案


将其转换为秒并除以 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)

推荐阅读