QueryDSL-如何使用mysql函数

这个模拟的是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-如何使用mysql函数_第1张图片

使用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);

你可能感兴趣的:(mysql,querydsl)