主頁 > 資料庫 > 【資料庫】時區及JDBC的時區設定

【資料庫】時區及JDBC的時區設定

2023-05-25 09:22:15 資料庫

JDBC連接時有個TimeZone配置,這玩意到底有用嗎?我是使用Postgresql和Mysql兩個資料庫驗證的,結果如下:

資料庫 部署方式 版本 JDBC連接TimeZone引數 JDBC連接serverTimezone引數 總結
Mysql docker 8.0 沒用 有用,會使用客戶端時區與設定的引數時區比較,并回傳客戶端時區對應的時間,詳見實體1 Mysql使用JDBC連接時可以配置serverTimezone引數告訴客戶端服務器的時區,因為Mysql的TimeStamp型別是沒有時區概念的,且沒有timestamp with time zone資料型別,只能通過連接時配置資料庫server的時區,并通過兩時區的對比,回傳正確的客戶端時區的時間
Postgresql docker 15.3 沒用 沒用 Postgresql使用JDBC連接時,時區引數均無效,但Postgresql有timestamp with time zone資料型別,使用該資料型別時不管資料庫是什么時區設定,也不管客戶端是什么時區設定,只要你的客戶端時區不變,你存取得到的都是同一個時間,該時間的時區取決于客戶端的時區,資料庫中存盤的是對應的UTC時區時間,比如:2023-05-24 00:51:24.578703 +00:00,詳見實體2

 

實體1:

使用Mysql資料庫,建表DDL如下:

create table test
(
    a int       null,
    b timestamp null
);

資料庫中存盤的資料:

 使用JDBC連接,不配置serverTimezone引數,客戶端時區為東八區,執行以下SQL并用Java Date型別接收輸出:

SELECT b FROM test WHERE a = 1;
SELECT now();

輸出結果,注意Java的Date型別本身是沒有時區屬性的,這里之所以輸出了CST可以自行研究Date的toString方法:

Tue May 23 15:13:46 CST 2023
Wed May 24 01:11:17 CST 2023

使用JDBC連接,配置serverTimezone引數為serverTimezone=UTC,客戶端時區為東八區,執行上面的SQL并用Java Date型別接收輸出:

Tue May 23 23:13:46 CST 2023
Wed May 24 09:12:52 CST 2023

總結:

當不使用serverTimezone配置時,JDBC連接中服務器時區被認為與客戶端時區相同,因此資料庫中存盤的時間回傳時被認為是東八區時間,無需變動,但SELECT now();回傳的是Mysql服務器時間,即UTC時間,配置serverTimezone引數后,JDBC連接中服務器時區為UTC,客戶端時區為東八區,查詢資料庫中時間被認為是UTC時間,回傳給客戶端時進行+8小時操作,同時SELECT now();回傳值經過時區轉換,正確的回傳了東八區時間,

 

實體2:

使用Postgresql資料庫,建表DDL如下:

create table test
(
    a integer,
    b timestamp with time zone
);

客戶端時區為東八區,分別執行以下SQL:

INSERT INTO test VALUES (2, now());
SELECT b FROM test WHERE a = 2;
SELECT now();

查詢結果如下:

Wed May 24 09:39:39 CST 2023
Wed May 24 09:39:39 CST 2023

資料庫中存盤結果:

修改客戶端時區為東九區,重新執行以上SQL:

Wed May 24 10:42:17 KST 2023
Wed May 24 10:42:17 KST 2023

資料庫中存盤結果:

總結:

使用Postgresql的timestamp with time zone資料型別時,不管資料庫是什么時區設定,也不管客戶端是什么時區設定,只要你的客戶端時區不變,你存取得到的都是同一個時間,該時間的時區取決于客戶端的時區,資料庫中存盤的是轉換后的UTC時間,

 

綜上:

使用Mysql時,JDBC連接中應正確配置serverTimezone引數;使用Postgresql時,使用timestamp with time zone資料型別,來保證獲取時間時時區的正確性,

另外,建議能不用資料庫的now()就別用了,資料庫時區會搞得你頭疼;更近一步,能別用時間(Date)就別用了,時間戳沒有時區的概念,當前端需要顯示的時候再通過DateFormat或Json轉換配置時區即可,可以省去很多需要考慮時區的作業,

 

以上是我自己的實驗結果,如果你有不同的結論,歡迎一起探討,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/553355.html

標籤:MySQL

上一篇:150萬學術名詞中英對照字典ACCESS資料庫

下一篇:返回列表

標籤雲
其他(159660) Python(38169) JavaScript(25450) Java(18123) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7209) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4576) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1944) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 【資料庫】時區及JDBC的時區設定

    JDBC連接時有個TimeZone配置,這玩意到底有用嗎?我是使用Postgresql和Mysql兩個資料庫驗證的。結果如下: 資料庫 部署方式 版本 JDBC連接TimeZone引數 JDBC連接serverTimezone引數 總結 Mysql docker 8.0 沒用 有用,會使用客戶端時區 ......

    uj5u.com 2023-05-25 09:22:15 more
  • 150萬學術名詞中英對照字典ACCESS資料庫

    今天這個資料是一款字典的型別的軟體,專門用來查詢一些學術上面的名詞的中英對照,超過180個學科分類,150多萬條記錄,伴隨您悠游于學海之中,是您做學問、寫論文的好幫手。 主要科目有:電子計算機名詞(107213)、電機工程名詞(100395)、電力工程(68379)、外國地名譯名(64487)、機械 ......

    uj5u.com 2023-05-25 09:21:56 more
  • Apache Hudi 在袋鼠云資料湖平臺的設計與實踐

    在大資料處理中,[實時資料分析](https://www.dtstack.com/dtengine/easylake?src=https://www.cnblogs.com/DTinsight/p/szsm)是一個重要的需求。隨著資料量的不斷增長,對于實時分析的挑戰也在不斷加大,傳統的批處理方式已經不能滿足[實時資料處理](https://www.dtstack.com ......

    uj5u.com 2023-05-25 09:21:46 more
  • mycat實作mysql基于GITD實作雙主雙從讀寫分離master節點高可用

    架構說明 10.0.0.18 master節點和10.0.0.22節點互為主 10.0.0.19 10.0.0.18的slave節點 10.0.0.22 master節點和10.0.0.19節點互為主 10.0.0.24 10.0.0.22的slave節點 10.0.0.23 mycat節點 mys ......

    uj5u.com 2023-05-24 09:34:55 more
  • es筆記五之term-level的查詢操作

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記五之term-level的查詢操作](https://mp.weixin.qq.com/s/MiJx-uMTke3zAwVu6-36QA) 官方檔案上寫的是 term-level queries,表義為基于準確值的對檔案的查詢,可以理解 ......

    uj5u.com 2023-05-24 09:33:12 more
  • es筆記五之term-level的查詢操作

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記五之term-level的查詢操作](https://mp.weixin.qq.com/s/MiJx-uMTke3zAwVu6-36QA) 官方檔案上寫的是 term-level queries,表義為基于準確值的對檔案的查詢,可以理解 ......

    uj5u.com 2023-05-24 08:55:17 more
  • Ubuntu 18.04 (Bionic) 簡單快速的安裝mongodb

    按步驟走,不帶腦子式安裝(注意4.0版本mongodb官方已經不再支持,以下代碼中可以修改mongodb版本號安裝,目前最新版為6.0,如果懶得改直接用也可以,文章后邊第三章第一條代碼會直接升級為最新版本mongodb): **1.匯入包管理系統使用的公鑰** ```powershell wget ......

    uj5u.com 2023-05-24 08:54:25 more
  • mycat實作mysql基于GITD實作雙主雙從讀寫分離master節點高可用

    架構說明 10.0.0.18 master節點和10.0.0.22節點互為主 10.0.0.19 10.0.0.18的slave節點 10.0.0.22 master節點和10.0.0.19節點互為主 10.0.0.24 10.0.0.22的slave節點 10.0.0.23 mycat節點 mys ......

    uj5u.com 2023-05-24 08:53:50 more
  • 小白零基礎在 Centos 7 中安裝 mysql

    本文參考這三篇博文,安裝,修改配置,修改密碼。感謝大佬的分享 首先安裝好Centos,并使用xshell連接 一、下載 1、下載安裝檔案 建議自己到這個地址下載 https://dev.mysql.com/downloads/mysql/。選擇以下版本 2、下載完后上傳到系統,并解壓,可以用 tar ......

    uj5u.com 2023-05-23 10:12:20 more
  • 線上問題處理案例:出乎意料的資料庫連接池

    本文是線上問題處理案例系列之一,旨在通過真實案例向讀者介紹發現問題、定位問題、解決問題的方法。本文講述了從垃圾回收耗時過長的表象,逐步定位到資料庫連接池保活問題的全程序,并對其中用到的一些知識點進行了總結。 ......

    uj5u.com 2023-05-23 09:55:48 more