2016-09-09 55 views
0

我有一个类型为TIMESTAMP(6)的列的数据库表。我希望在该列中的EST时间中始终存储时间戳。任何人都可以帮助如何构建一个EST时间的时间戳对象吗?构建EST中的时间戳对象

+0

考虑与类型,如'WITH TIME ZONE' TIMESTAMP创建数据库列 - 让数据库和JDBC驱动程序会自动照顾的时区的问题,所以你可以把你的时间戳的时区无关的绝对点及时。 – Wyzard

回答

0

通常,我们使用PreparedStatement#setTimestamp(int paramIndex,Timestamp ts)将时间戳存储在数据库中。它利用Java端的'java.util.Date'和JDBC端的java.sql.Timestamp来实现这一点。这个调用将导致您的JDBC驱动程序计算JVM时区中的时间。但是,时间戳和时区信息的存储取决于数据库。如果该列没有存储时区的信息,则访问它的应用程序将需要处理该时区。

现在,如果你想存储时间戳的时区是从你的JVM TZ不同的,那么你应该考虑使用:PreparedStatement#setTimestamp(int paramIndex, Timestamp ts, Calendar cal)

试试这个,让我知道,如果它的工作原理。

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("EST")); 
stmt.setTimestamp(10, ts, cal);