在JDBC中,当调用PreparedStatement.setArray()时,如何为时间戳数组指定时区?
UTC 时间戳,我会这样做:
PreparedStatement pst = connection.prepareStatement(sql);
pst.setTimestamp(1, timestampValue, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
但现在我想做同样的事情,但对于时间戳数组:
pst.setArray(1, timestampValues);
目前,使用 JDBC,如果我想将数据库列设置为时间戳值并使数据库将其解释为 timestampValues 是一个时间戳数组(数据库列的类型为“timestamp[]”,例如在 Postgresql 中)。我不知道在哪里可以向 JDBC 驱动程序指定数组中的每个时间戳值都必须被视为 世界标准时间?
Currently, using JDBC, if I want to set a database column to a timestamp value and have the database interpret it as a UTC timestamp, I would do this:
PreparedStatement pst = connection.prepareStatement(sql);
pst.setTimestamp(1, timestampValue, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
but now I want to do the same thing but for an array of Timestamps:
pst.setArray(1, timestampValues);
where timestampValues is an array of Timestamps (and the database column is of type "timestamp[]" e.g in Postgresql. I don't see where I can specify to the JDBC driver that each Timestamp value in the array has to be treated as UTC?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信您必须立即将它们全部设置为 UTC。另外,下面的代码会覆盖 JVM 使用的时区,使其对所有内容都使用 UTC。然后,如果您需要 UTC 以外的其他时间,您可以使用 SimpleDateFormat 来更改它(例如用于日志记录)。
我参考了以下帖子获取时区信息。
I believe you will have to set them all to UTC right away. Plus the code below overrides the TimeZone used by your JVM to make it use UTC for everything. Then if you need other than UTC you can use SimpleDateFormat to change it (say for logging).
I referred to the following post for the timezone information.
用户 connection.createArrayOf(..) 如此处所述 http://docs。 oracle.com/javase/tutorial/jdbc/basics/array.html
User connection.createArrayOf(..) as described here http://docs.oracle.com/javase/tutorial/jdbc/basics/array.html