我是Oracle的新手,一直在試圖理解Oracle DATE類型的工作原理。Oracle日期比較和時區
我有一個帶有時區信息的Java Date對象。據我所知,Java Date對象被標準化爲1970年1月1日以來的毫秒數。這個Date對象然後通過JDBC API保存到數據庫中。準備好的語句如下所示:
ps.setTimestamp(index,new java.sql.Timestamp.Timestamp(date.getTime()));
這是爲了捕獲日期和時間信息。
與此索引對應的數據庫列的類型爲oracle DATE。當我將此java.sql.Timestamp.Timestamp對象值存儲到Oracle DATE字段中時,是否存儲規範化日期(自1970年1月1日以來的毫秒數)?因此,無論數據庫位於哪個時區,存儲在oracle DATE列中的數據都是相同的標準化數據,是正確的嗎?
如果我在SYSDATE中比較where子句中的這個DATE列,SYSDATE在比較完成後也會被標準化。我不確定oracle的比較是如何完成的,因爲oracle服務器可以處於不同的時區。
在此先感謝。
DATE類型將日期的時間部分存儲到第二個粒度,如果您需要進一步的細節,那麼您應該考慮一個TIMESTAMP類型(http://www.databasejournal.com/features/oracle/article.php /2234501/A-Comparison-of-Oracles-DATE-and-TIMESTAMP-Datatypes.htm)。有關DATE類型的時區支持的完整細分:http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch4datetime.htm – Ollie