![](/img/trans.png)
[英]Converting oracle.sql.timestamptz to java.sql.Timestamp
[英]Retrieve Oracle Date/Timestamp field as is in Java java.sql.Timestamp without converting to DST
我在DATE數據類型的oracle中有column(LOGIN_TIME)。 我正在嘗試使用JDBC將其讀取為Java中的時間戳。 該表中的行之一的值為2006-04-02 02:00:01.0。 當我做
從TABLE中選擇LOGIN_TIME,CAST(LOGIN_TIME作為TIMESTAMP);
我看到sql-developer將值顯示為
2006-04-02 02:00:01.0
但是,當我使用ResultSet.getTimestamp()方法在Java中檢索此列值時,我看到的值為2006-04-02 03:00:01.0。
經過大量的搜尋后,我了解到
現在,我的問題是
System.out.println(+ rs.getTimestamp(index,Calendar.getInstance(TimeZone.getTimeZone(“ UTC”)))));;
給我的價值是
2006-04-01 18:00:01.0
Java中的Date
不存儲時區。 而是使用您當地的時區來表示值。 這就是為什么您看到不同的結果的原因。
如果使用Java 8和JDBC 4.2,則可能要使用更可靠的java.time.*
包。 就這么簡單:
LocalDateTime dateTime = rs.getObject(index, LocalDateTime.class);
如果要將LocalDateTime
轉換為java.util.Date
,可以通過以下方式實現:
Instant instant = dateTime.atZone(ZoneId.systemDefault()).toInstant();
Date dateFromOld = Date.from(instant);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.