![](/img/trans.png)
[英]Execution of a Postgresql query using JDBC taking much more time compared to execution of query in pgadmin
[英]Query time column from postgresql using jdbc
我使用的是PostgreSQL 8.4 ,服務器是linux,而linux的時區is'EDT
' is'EDT
'而不是' UTC
'。 PostgreSQL的配置使數據庫的時區為“ UTC”。 該代碼在JBoss9上運行。
我有一個SQL, select to_char(ts_entry.submitted_date, 'MM/DD/YYYY HH24:MM') as submitted_date_format from ts_entry where ....
如果我們在PostgreSQL中運行sql,則將獲得值“ 07/10/2017 02:07
”
但是當我嘗試從java中的resultSet
獲取值時,
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(sql);
String value = rs.getString("submitted_date_format");
該值將為“ 07/09/2017 22:07
”。 DB中的原始值為“ 2017-07-10 02:02:25.268+00
”。
如何在代碼級別處理由linux服務器的時區引起的影響?
順便說一句,我知道一個替代解決方案,更改jboss的啟動腳本,以使jboss使用時區“ UTC”啟動。 可以在代碼級別處理此問題嗎?
數據庫服務器計算機的時區對行為沒有直接影響,除了它用於初始化postgresql.conf
timezone
(這是客戶端時區的初始設置,除非被數據庫會話覆蓋)。
PostgreSQL在內部將timestamp with time zone
存儲在UTC中,並在交付時將其轉換為客戶端的本地時區。
因此,您應該按照需要的方式設置數據庫會話時區
SET TIME ZONE '<time zone name>';
當您從PostgreSQL中選擇日期時,會將日期轉換為該時區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.