【问题标题】:HQL select sum and time group by time unit (hour/day/month) andHQL 按时间单位(小时/天/月)选择总和和时间组和
【发布时间】:2015-11-14 15:57:38
【问题描述】:

我有一张这样的桌子:

COLUMN               TYPE
------------------------------
ID                   INTEGER
VALUE                INTEGER
TIME                 TIMESTAMP

如何使用 HQL 编写查询,选择按时间单位分组的值列的总和(例如按天分组)并选择这个时间单位作为第二列。

我尝试过这样做并得到了这样的结果: 但是 HQL 中没有 parsedatetime 函数,所以我现在不知道如何获得正确的查询。

select sum(value),
parsedatetime(day(time) || '.' || month(time) || '.' || year(time) || ' ' || hour(time) ||':00:00', 'dd.MM.yy hh:mm:ss')
as xtime 
from Table 
group by time

我希望此查询返回具有 2 个字段的对象:int 和 java.sql.Date。

【问题讨论】:

    标签: java spring hibernate hql


    【解决方案1】:

    您正在按整个日期时间值分组,这就是您没有预期结果的原因,您必须按所需的日期时间对其进行分组,请尝试以下操作:

    select sum(value),
    day(time) as xtime 
    from Table 
    group by day(time)
    

    【讨论】:

    • 但我希望此查询返回包含两个字段的对象:int 和 java.sql.Date
    • 好的,如果多个日期时间值在同一天,那么您希望将其中的哪一个作为第二列?
    • 这就是我尝试通过 parsedatetime 函数来做的原因。也许我应该按天(时间)||月(时间)分组,这样我就不会遇到这个问题,因为如果超出我的范围会查询几年的数据
    • 是的,那么您必须按天(时间)||月(时间)对其进行分组
    猜你喜欢
    • 2018-08-27
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2019-01-10
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多