比如说,给定一个日期,如“20091208”
我用java程序来获取这个日期是一年终第几周
得到结果是50
相反,我用oracle日期函数
to_char(sysdate,'ww')得到结果是49
不知道大家有没有注意到这个问题,大家怎么来统一这种差异的?

解决方案 »

  1.   

    本身的算法不一样,oracle的"ww"取的是
    Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
    所以你觉得尽管“20091208”和““20091210”是同一周,但ww取出来不是。它把1月1号当第一周的第一天。
    你Java怎么取得?
      

  2.   

    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(new Date());
    System.out.println(c.get(java.util.Calendar.WEEK_OF_YEAR));
    结果是50select to_char(sysdate,'ww') from dual结果还是50
      

  3.   

    select to_char(sysdate-1,'ww') from dual 是49
    343天/7 =49 所以昨天是49周最后一天
    今天是50周第一天
    select to_char(sysdate+7,'ww') from dual
    得到是就是51了6楼是正确的,ORACLE以一月一日为第一天
    JAVA是自然周
    看情况用了,JAVA应该准确点
      

  4.   

    java 的这个日期类是有问题的,不知道是我的版本的是还是本身出问题了,我的java。Calendar能创建出2002-02-29这样的日期
      

  5.   


    我的JDK1。5同样问题
    这个是他没有加判断吧,自己来咯
      

  6.   

    你所说的两中算法变=便是JAVA和ORACLE的算法,对号入坐
    学好SQL语言吧,通用的