我在另一个时区(美国,中央)使用的是我不控制的Oracle服务器。有一个包含DATE列的表格,当插入东西时,它会得到一个默认值SYSDATE(即,列始终设置为系统时间,而程序员不需要明确设置它)。使用JDBC从Oracle读取DATE字段
我在不同的时区(美国,东海岸)。如何使用JDBC读取此列并获取Epoch/UTC时间?
当我呼叫getTimestamp().getTime()
(在ResultSet上)时,我将时间转换为本地时间。也就是说,如果服务器上午10点插入了一些内容,则现在是11点(UTC时间下午4点)。当我打电话给getTimestamp().getTime()
时,我得到当地时间上午10点(即UTC时间下午3点)的时间。
我有一个部分答案。
Calendar sqlServerCalendar = Calendar.getInstance(TimeZone.getTimeZone("CST"));
long t = rs.getTimestamp("timestampcolumn", sqlServerCalendar).getTime();
这是不理想的,因为我必须指定服务器的时区(我将进入设置)。但它似乎回报了我想要的答案。有没有办法在运行时查询服务器的时区,而不需要设置?或者,有没有更好的方法来做到这一点?我更喜欢一种解决方案,不必知道(通过硬编码的值或设置)它或服务器所在的时区(因此,如果在不同的时区运行,和/或服务器移动,它将不会改变) 。
你用什么dateformat模式来检查输出中的时间?请确保在该代码中设置时区(至utc) – Jan
我将数字作为long(由getTime()返回,并将其复制到www.epochconverter.com。 –