2011-11-03 143 views
2

我想从表中每天获取计数,但时间列很长,所以我不能仅仅按时间列进行分组。我必须按时间按日期分组。我怎样才能做到这一点?在long(bigint)中存储时间戳的列中按日期进行分组

表:

Column | type 
---------------- 
id  | Long (bigint) 
name  | String (varchar) 
time  | Long (bigint) 

我有尝试下面的查询,但因为我在很长一段时间,我按日期要组这是行不通的。

select time,count(*) from my_table mt group by time; 

如何在上述查询中按日期进行分组?

另外一件事我将在hibernate中使用这个查询,所以需要一个也可以用hql编写的查询。

回答

2

首先,我们会将我们的时间戳转换为日期,然后按日期分组!

select mt.time,count(*) from my_table mt group by DATE(FROM_UNIXTIME(mt.time)); 

希望这会工作。欢呼:)

+0

您需要回刻度而不是单引号(或根本没有刻度)。 –

+1

你知道如何在postgresql中做同样的事吗? –

+0

@Salman:谢谢你的纠正。 – Suleman

1
SELECT DATE(FROM_UNIXTIME(`time`)) AS date_from_time, COUNT(1) 
FROM my_table 
GROUP BY date_from_time 
+0

它不起作用。我得到的结果为null | 588'。 588是表的总行数。 –

相关问题