数据库有一个UTC 时间为2012-07-12T03:00:00.000Z的记录
现在以不同的session timezone去读取这个记录,获得它的Date日期
那么这些Date的fasttime应该是一样的吧?因为他们都是从同一个记录取出来的。
但结果却不一样:
PreparedStatement pst = null;
pst = con.prepareStatement(sql);
                   ((OracleConnection)con).setSessionTimeZone("America/Dawson");
                  rs = pst.executeQuery();
                  rs.next();
                  Date d1 = rs.getDate(1);
                  System.out.println(d.getTime());
日期                      session时区   时区偏移   fastTime值
2012-07-11T20:00:00.000Z  America/Dawson -7        1342036800000
2012-07-12T03:00:00.000Z  GMT            0         1342062000000奇怪了,这两个时间实际上同一天在不同时区的显示,为什么fastTime也不一样?
这样的话,对于不同时区的时间,怎么比较它们的先后?

解决方案 »

  1.   

    同样比较苦恼,
    JAVA的日期比较函数都是使用 fastTime 这个属性的。但是这个属性貌似自对象被实例化之后,就不会变了。下面我将某一个DATA类型的时分秒置空之后,对应的fasttime还是不会变。
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.clear(Calendar.HOUR);
    calendar.clear(Calendar.MINUTE);
    calendar.clear(Calendar.SECOND);
      

  2.   

    默认都是GMT,oracle帮你算好了?
      

  3.   


    我刚才是不是理解错了,难道你在数据库表中直接有个列就是fastTime的值(你录入时就不变了),是这个意思?