这个模拟的是mysql的DATE_FORMAT(date,format)和FROM_UNIXTIME()函数的一起使用,因为项目中一个发布时间的设定是时间戳,所以需要使用FROM_UNIXTIME()来把时间戳转化。
实现业务逻辑:
按照小时分组统计的功能
SELECT
DATE_FORMAT(FROM_UNIXTIME(publish_time/1000),'%Y-%m-%d %H') publish_time,COUNT(id) totole
FROM _trends_content
WHERE publish_time >= 1563983000528
GROUP BY DATE_FORMAT(FROM_UNIXTIME(publish_time/1000),'%Y-%m-%d %H')
如果要按每分钟统计的话,参数要改成%Y-%m-%d %H:%i:00
统计结果如下
使用querydsl的stringTemplate模板
StringTemplate from_unixtime = Expressions.stringTemplate("FROM_UNIXTIME({0}/1000)",QContent.publishTime);
StringTemplate time_format = Expressions.stringTemplate("DATE_FORMAT({0},'%Y-%m-%d %H')",from_unixtime);