比如我有一个list ,list里面有date型数据,需要将数据每月和每星期进行显示; 即一些星期对应相应的数据 我现在将数据库中一个月的数据查出来了,但是 查出来的数据 要如何进行分星期显示? 请问各位大侠,有碰到过类似问题没?? 我写了总是出了错误。 请各位大侠指点迷津。。谢谢~~~ 我用的是struts+hibernate....
比如我有一个list ,list里面有date型数据,需要将数据每月和每星期进行显示; 即一些星期对应相应的数据 我现在将数据库中一个月的数据查出来了,但是 查出来的数据 要如何进行分星期显示? 请问各位大侠,有碰到过类似问题没?? 我写了总是出了错误。 请各位大侠指点迷津。。谢谢~~~ 我用的是struts+hibernate....
首先你查询出来的数据肯定是有时间记录一个月什么时候生成的这条记录的吧?然后在数据库查询的时候就可以直接按照你的要求分了,具体就和火龙果说的一样,三个不知道不晓得怎么回答你另外如果你把数据全部查询出来的话,那不要放到List里面了,放到Map里面
key是Date类型,value就是数据库中的一条数据
然后自己写个处理方法
具体思路就是,获取的数据中当月第一条数据的Date用date.getDate获取是第几天赋值给x,然后把Map的keySet拿到,遍历for(Date d:map.keySet){
switch (d.getDate-x)/7) {
case 0: System.out.println("第一周");break;
case 1: System.out.println("第二周");break;
case 2: System.out.println("第三周");break;
case 3: System.out.println("第四周");break;
case 4: System.out.println("第五周");break;
default:break;
}
}
我用的数据库是oracle呢。。
语句如下,这样可以查询出一个月的数据,其中yyyy和mm是根据传递的参数进行查询的,其实可以简单的把语句缩写:
select datatime from Tb_Plan_Info
where to_char(datatime , 'yyyy-mm') = to_char(SYSDATE, 'yyyy-mm');整体的如下:
select distinct pi.online_Course_Name,
pi.teacher_Id,
pi.lesson_Time,
ci.course_Name,
ci.course_Type,
pi.online_Class_Id,
pi.state,
pi.re,
pi.allow_Seat_Count,
to_char(pi.lesson_time, 'yyyy-mm-dd hh24:mi:ss'),
count(distinct(oi.student_Id))
from Tb_Course_Plan_Info pi, Tb_Course_Info ci, Tb_Seat_Order_Info oi
where pi.course_Id = ci.course_Id
and pi.state != '5'
and pi.del = 0
and ci.del = 0
and oi.del = 0
and to_char(pi.lesson_time, 'mm') = to_char(SYSDATE, 'mm')
and to_char(pi.lesson_time, 'yyyy') = to_char(SYSDATE, 'yyyy')
group by to_char(pi.lesson_time, 'mm'),
pi.online_Course_Name,
pi.teacher_Id,
pi.lesson_Time,
ci.course_Name,
ci.course_Type,
pi.online_Class_Id,
pi.state,
pi.re,
pi.allow_Seat_Count
order by pi.lesson_Time desc; 谢谢各位了~~
if(month!=null&&(!month.equals("null")))thisMonth.set(Calendar.MONTH,Integer.parseInt(month));
if(year!=null&&(!year.equals("null")))thisMonth.set(Calendar.YEAR,Integer.parseInt(year));
thisMonth.setFirstDayOfWeek(Calendar.SUNDAY);
thisMonth.set(Calendar.DAY_OF_MONTH,1);
int firstIndex=thisMonth.get(Calendar.DAY_OF_WEEK)-1;
int maxIndex=thisMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=0;i<maxIndex;i++){
days[firstIndex+i]=String.valueOf(i+1);
这个是在页面上打印日历,你可以添加判断来显示每周信息- -!或者直接以日历形式显示,用户鼠标放到日历的某个日期时,就用jQuery把数据淡出。(这个是我做日记本的流程~~)
至于怎么分周,其实plsql也好jdbc也好思路都是一样的
放的是对象呢,
我想知道如何进行限定? 如果是按星期进行分组查询,麻烦给示例~~ 多谢了~~
现在 有一个解决方案就是根据每月的第一天是星期几在JSP进行判断,将后面一个星期的数据 与 list里的数据比对,如果位于该星期就显示; 但是如果可以在数据库中还可以将该月信息进行分组,就更好~ 多谢多谢~~
首先获得你传递进去的月的第一天是周几,然后根据周几来计算第一周有几天
比方说 1月1号是周一话第一周是6天,如果是周六的话就是一天
例如1号是周一,那么7号就是周日,就是第二个礼拜了
也就是说这个月所有的日期是第几个礼拜是这么算的
如果日期>=7 <14的话就是第二个礼拜
>=14 <21 就是第三个礼拜
>=21 <28 第四个礼拜
其他都是第五个礼拜了
把上面的逻辑整理成where 后面的表达式,做个视图不就好了,第一 第二 第三 第四个礼拜
然后你只要直接查询每周对应的视图就可以了