如何在查询的基础上设置JDBC的时区?

时间:2017-02-28 03:05:27

标签: java jdbc timezone

执行此操作的一种方法如下。

TimeZone.setDefault(TimeZone.getTimeZone("yourTimeZone"));

但是,它会影响整个JVM。有没有办法在查询的基础上这样做是安全的,并且不会对可能假定特定时区的应用程序或JVM的其他部分产生影响?

1 个答案:

答案 0 :(得分:2)

在设置/获取Timestamp值时指定所需的时区。

  

PreparedStatement.setTimestamp(int parameterIndex, Timestamp x, Calendar cal)

     

使用Calendar对象,驱动程序可以计算考虑自定义时区的时间戳。如果未指定Calendar对象,则驱动程序将使用默认时区,即运行应用程序的虚拟机的时区。

  

ResultSet.getTimestamp(String columnLabel, Calendar cal)

     

如果基础数据库不存储时区信息,则此方法使用给定的日历为时间戳构造适当的毫秒值。

两者都使用日历的时区:

  

Calendar.getInstance(TimeZone zone)

     

使用指定的时区和默认语言环境获取日历。

  

Calendar.setTimeZone(TimeZone value)

     

使用给定的时区值设置时区。