java mysql 按日期分组查询

如在mysql中有张表user
有三条数据
注册时间分别是是2014-11-28,2014-11-28,2014-11-29
那我要怎么分组查询出2014-11-01到2014-11-30的数据,空的也显示
要显示成
count time
.
.
.
.
0 2014-11-26
0 2014-11-27
2 2014-11-28
1 2014-11-29
0 2014-11-30
或者在java里面怎么补全

4个回答

就先获取数据库里面的时间,然后再搞一个循环,补齐时间,从开始时间到结束时间去循环,逐个去判断取回的时间是否连续,不连续的就去补齐之间的时间.或者利用数据库搞一个全时间的表或者视图为主表,去左连接关联

告诉你思路,自己写,mysql里直接使用分组查询已有的时间就好
在java程序里你循环的时候,记得按时间升序排列
然后你设定一个中间时间变量temp=2014-11-1
然后用这个中间时间变量temp跟mysql数据库读出来的时间比较,如果数据库读出来的时间跟这个时间不相等,你就用一个for循环输出中间时间变量temp到数据库读出来的时间-1之间的时间输出,然后再把数据库读出来的时间+1的值赋给中间时间变量temp
思路写法大致如下:
数据库循环开始
if(temp!=数据库读出来的时间值){
for(i=temp;i<数据库读出来的时间值-1;i++){
}
temp=数据库读出来的时间+1
}
else{
输出数据库里的时间信息
temp=数据库读出来的时间+1
}

数据库循环结束

chinmo
一把编程的菜刀 忘了还有一点,就是要判断最后一条数据的时间是否等于你查询的结束时间,如果不是,那就要循环最后一条数据的时间+1 跟查询结束时间的信息
5 年多之前 回复

直接用group by 语句 group by 要分组的时间,加count time。就行了。用数据库,比Java循环不知快了多少倍。

select count(*),time from 表名 where time between 2014-11-01 and 2014-11-30 group by time

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问