国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置

這篇具有很好參考價(jià)值的文章主要介紹了【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

JDBC連接時(shí)有個(gè)TimeZone配置,這玩意到底有用嗎?我是使用Postgresql和Mysql兩個(gè)數(shù)據(jù)庫(kù)驗(yàn)證的。結(jié)果如下:

數(shù)據(jù)庫(kù) 部署方式 版本 JDBC連接TimeZone參數(shù) JDBC連接serverTimezone參數(shù) 總結(jié)
Mysql docker 8.0 沒(méi)用 有用,會(huì)使用客戶端時(shí)區(qū)與設(shè)置的參數(shù)時(shí)區(qū)比較,并返回客戶端時(shí)區(qū)對(duì)應(yīng)的時(shí)間,詳見(jiàn)實(shí)例1 Mysql使用JDBC連接時(shí)可以配置serverTimezone參數(shù)告訴客戶端服務(wù)器的時(shí)區(qū),因?yàn)镸ysql的TimeStamp類型是沒(méi)有時(shí)區(qū)概念的,且沒(méi)有timestamp with time zone數(shù)據(jù)類型,只能通過(guò)連接時(shí)配置數(shù)據(jù)庫(kù)server的時(shí)區(qū),并通過(guò)兩時(shí)區(qū)的對(duì)比,返回正確的客戶端時(shí)區(qū)的時(shí)間
Postgresql docker 15.3 沒(méi)用 沒(méi)用 Postgresql使用JDBC連接時(shí),時(shí)區(qū)參數(shù)均無(wú)效,但Postgresql有timestamp with time zone數(shù)據(jù)類型,使用該數(shù)據(jù)類型時(shí)不管數(shù)據(jù)庫(kù)是什么時(shí)區(qū)設(shè)置,也不管客戶端是什么時(shí)區(qū)設(shè)置,只要你的客戶端時(shí)區(qū)不變,你存取得到的都是同一個(gè)時(shí)間,該時(shí)間的時(shí)區(qū)取決于客戶端的時(shí)區(qū)。數(shù)據(jù)庫(kù)中存儲(chǔ)的是對(duì)應(yīng)的UTC時(shí)區(qū)時(shí)間,比如:2023-05-24 00:51:24.578703 +00:00,詳見(jiàn)實(shí)例2

?

實(shí)例1:

使用Mysql數(shù)據(jù)庫(kù),建表DDL如下:

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

數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù):

【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置

?使用JDBC連接,不配置serverTimezone參數(shù),客戶端時(shí)區(qū)為東八區(qū),執(zhí)行以下SQL并用Java Date類型接收輸出:

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

輸出結(jié)果,注意Java的Date類型本身是沒(méi)有時(shí)區(qū)屬性的,這里之所以輸出了CST可以自行研究Date的toString方法:

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

使用JDBC連接,配置serverTimezone參數(shù)為serverTimezone=UTC,客戶端時(shí)區(qū)為東八區(qū),執(zhí)行上面的SQL并用Java Date類型接收輸出:

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

總結(jié):

當(dāng)不使用serverTimezone配置時(shí),JDBC連接中服務(wù)器時(shí)區(qū)被認(rèn)為與客戶端時(shí)區(qū)相同,因此數(shù)據(jù)庫(kù)中存儲(chǔ)的時(shí)間返回時(shí)被認(rèn)為是東八區(qū)時(shí)間,無(wú)需變動(dòng),但SELECT now();返回的是Mysql服務(wù)器時(shí)間,即UTC時(shí)間。配置serverTimezone參數(shù)后,JDBC連接中服務(wù)器時(shí)區(qū)為UTC,客戶端時(shí)區(qū)為東八區(qū),查詢數(shù)據(jù)庫(kù)中時(shí)間被認(rèn)為是UTC時(shí)間,返回給客戶端時(shí)進(jìn)行+8小時(shí)操作,同時(shí)SELECT now();返回值經(jīng)過(guò)時(shí)區(qū)轉(zhuǎn)換,正確的返回了東八區(qū)時(shí)間。

?

實(shí)例2:

使用Postgresql數(shù)據(jù)庫(kù),建表DDL如下:

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

客戶端時(shí)區(qū)為東八區(qū),分別執(zhí)行以下SQL:

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

查詢結(jié)果如下:

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

數(shù)據(jù)庫(kù)中存儲(chǔ)結(jié)果:

【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置

修改客戶端時(shí)區(qū)為東九區(qū),重新執(zhí)行以上SQL:

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

數(shù)據(jù)庫(kù)中存儲(chǔ)結(jié)果:

【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置

總結(jié):

使用Postgresql的timestamp with time zone數(shù)據(jù)類型時(shí),不管數(shù)據(jù)庫(kù)是什么時(shí)區(qū)設(shè)置,也不管客戶端是什么時(shí)區(qū)設(shè)置,只要你的客戶端時(shí)區(qū)不變,你存取得到的都是同一個(gè)時(shí)間,該時(shí)間的時(shí)區(qū)取決于客戶端的時(shí)區(qū)。數(shù)據(jù)庫(kù)中存儲(chǔ)的是轉(zhuǎn)換后的UTC時(shí)間。

?

綜上:

使用Mysql時(shí),JDBC連接中應(yīng)正確配置serverTimezone參數(shù);使用Postgresql時(shí),使用timestamp with time zone數(shù)據(jù)類型。來(lái)保證獲取時(shí)間時(shí)時(shí)區(qū)的正確性。

另外,建議能不用數(shù)據(jù)庫(kù)的now()就別用了,數(shù)據(jù)庫(kù)時(shí)區(qū)會(huì)搞得你頭疼;更近一步,能別用時(shí)間(Date)就別用了,時(shí)間戳沒(méi)有時(shí)區(qū)的概念,當(dāng)前端需要顯示的時(shí)候再通過(guò)DateFormat或Json轉(zhuǎn)換配置時(shí)區(qū)即可,可以省去很多需要考慮時(shí)區(qū)的工作。

?

以上是我自己的實(shí)驗(yàn)結(jié)果,如果你有不同的結(jié)論,歡迎一起探討。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457080.html

到了這里,關(guān)于【數(shù)據(jù)庫(kù)】時(shí)區(qū)及JDBC的時(shí)區(qū)設(shè)置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JDBC連接數(shù)據(jù)庫(kù)

    JDBC連接數(shù)據(jù)庫(kù)

    目錄 一、JDBC概念 1.1Java操作數(shù)據(jù)庫(kù)的流程 1.2編寫(xiě)代碼步驟 1.3具體操作 二、JDBC API詳解 2.1 DriverManager(驅(qū)動(dòng)管理類) 作用 2.2 Connection(數(shù)據(jù)庫(kù)連接對(duì)象)作用: 2.3 Statement?? 2.4 ResultSet (結(jié)果對(duì)象集)作用 2.5 PreparedStatement? 三、數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn) JDBC 就是使用 Java語(yǔ)言操作關(guān)系型

    2024年02月05日
    瀏覽(23)
  • JDBC入門(mén)數(shù)據(jù)庫(kù)連接

    JDBC(Java Database Connectivity)是Java程序與數(shù)據(jù)庫(kù)進(jìn)行交互的一種標(biāo)準(zhǔn)接口,它提供了一種簡(jiǎn)單的方式來(lái)連接和操作數(shù)據(jù)庫(kù)。在使用JDBC之前,需要先了解以下幾個(gè)概念: JDBC Driver :JDBC驅(qū)動(dòng)程序是一個(gè)Java類,用于將Java應(yīng)用程序與特定數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)連接。JDBC驅(qū)動(dòng)程序分

    2023年04月25日
    瀏覽(14)
  • 數(shù)據(jù)庫(kù)——JDBC基本連接步驟

    目錄 JDBC概念: JDBC保姆級(jí)連接步驟: JDBC連接中用到的對(duì)象詳解: 1.DriverManager對(duì)象(驅(qū)動(dòng)管理對(duì)象) 2.Connection對(duì)象(連接對(duì)象) 3.Statement對(duì)象(執(zhí)行SQL語(yǔ)句的對(duì)象) 4.ResultSte對(duì)象(結(jié)果集) JDBC的全稱是:Java數(shù)據(jù)庫(kù)連接(Java DataBase Connectivity),它是一套用于執(zhí)行SQL語(yǔ)句的Jav

    2024年02月07日
    瀏覽(26)
  • 通過(guò)JDBC連接數(shù)據(jù)庫(kù)并用Java把數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)

    通過(guò)JDBC連接數(shù)據(jù)庫(kù)并用Java把數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)

    目錄 1.新建項(xiàng)目 2.在src包下新建lib包,用來(lái)存放jar包(下載對(duì)應(yīng)jar包復(fù)制到lib包里) 3.右鍵導(dǎo)入的jar包,找到并單擊\\\"添加到庫(kù)\\\"(add....) 4.在src包下新建bean包,新建class類 5.class類中寫(xiě)數(shù)據(jù)庫(kù)表中對(duì)應(yīng)的列名的set get方法、空參、有參(String方法)注意:類名為私有類(private),新建類時(shí)數(shù)

    2024年02月02日
    瀏覽(98)
  • MySQL數(shù)據(jù)庫(kù),JDBC連接數(shù)據(jù)庫(kù)操作流程詳細(xì)介紹

    MySQL數(shù)據(jù)庫(kù),JDBC連接數(shù)據(jù)庫(kù)操作流程詳細(xì)介紹

    在學(xué)完 MySQL 和 Java 后,我們通常會(huì)嘗試使用 Java編譯器 連接 MySQL數(shù)據(jù)庫(kù),從而達(dá)到使用編譯器來(lái)操作數(shù)據(jù)庫(kù)的效果。連接的這個(gè)過(guò)程會(huì)用 JDBC 相關(guān)知識(shí),因此我把 JDBC 包的下載及導(dǎo)入流程,以及 JDBC 的使用流程整理下來(lái)分享給大家。 目錄 1. 啥是JDBC? 2. JDBC依賴包 2.1 依賴包

    2024年02月06日
    瀏覽(99)
  • JAVA連接數(shù)據(jù)庫(kù) JDBC編程

    JAVA連接數(shù)據(jù)庫(kù) JDBC編程

    提供修改數(shù)據(jù)庫(kù)和查詢數(shù)據(jù)庫(kù)的代碼,兩者只有很細(xì)微的差別 ????????注意在進(jìn)行連接數(shù)據(jù)庫(kù)首先你得下載你對(duì)應(yīng)MYSQL版本的JDBC驅(qū)動(dòng)包,比如MYSQL8.0版本的你就要下載MYSQL8.0版本的JDBC驅(qū)動(dòng)包,MYSQL5.1版本的你就要下載MYSQL5.1版本的JDBC驅(qū)動(dòng)包 我下載的8.0版本的驅(qū)動(dòng)包就是這個(gè)

    2024年02月15日
    瀏覽(98)
  • JDBC p5 數(shù)據(jù)庫(kù)連接池

    JDBC p5 數(shù)據(jù)庫(kù)連接池

    傳統(tǒng)的JDBC數(shù)據(jù)庫(kù)使用 DriverManager 來(lái)獲取, 每次向數(shù)據(jù)庫(kù)建立連接的時(shí)候都要將 Connection 加載到內(nèi)存中,再驗(yàn)證IP地址,用戶名和密碼(0.05 ~ 1 s 時(shí)間) 。需要數(shù)據(jù)庫(kù)連接的時(shí)候,就向數(shù)據(jù)庫(kù)要求一個(gè),頻繁的進(jìn)行數(shù)據(jù)庫(kù)連接操作將占用很多的系統(tǒng)資源,容易造成服務(wù)器崩潰。

    2024年02月15日
    瀏覽(21)
  • eclipse使用jdbc連接數(shù)據(jù)庫(kù)

    eclipse使用jdbc連接數(shù)據(jù)庫(kù)

    下載和mysql對(duì)應(yīng)版本的jar包。 我的mysql下載的8.0.13版本的,所以下載8.0.13的jar包。官網(wǎng)下載地址: https://dev.mysql.com/downloads/connector/j/?os=26 (如果需要下載歷史版本,點(diǎn)擊 archievs) 下載之后,解壓目錄,獲得jar包。 導(dǎo)入jarb包。 第一步:在eclipse中新建工程JDBC,建立一個(gè)lib目錄

    2024年02月11日
    瀏覽(23)
  • Java-JDBC連接數(shù)據(jù)庫(kù)

    Java-JDBC連接數(shù)據(jù)庫(kù)

    目錄 一、JDBC開(kāi)發(fā)步驟 1.Java程序連接數(shù)據(jù)庫(kù) 1.1引入MySQL驅(qū)動(dòng)包 1.2Java連接MySQL步驟 2 實(shí)現(xiàn)增刪改查操作 2.1 添加數(shù)據(jù) 2.2 修改數(shù)據(jù) 2.3 刪除數(shù)據(jù) 2.4 查詢數(shù)據(jù) 二、JDBC處理相關(guān)問(wèn)題 1 解決SQL注入問(wèn)題 1.1、問(wèn)題演示 1.2、解決問(wèn)題 2 JDBC事務(wù)處理 3 獲取自增長(zhǎng)鍵值 4 批處理操作 1.1 引入

    2024年02月09日
    瀏覽(90)
  • 【JDBC】Java連接MySQL數(shù)據(jù)庫(kù)

    【JDBC】Java連接MySQL數(shù)據(jù)庫(kù)

    數(shù)據(jù)庫(kù)編程指的是通過(guò)編程語(yǔ)言與數(shù)據(jù)庫(kù)進(jìn)行交互和操作的過(guò)程,包括使用編程語(yǔ)言創(chuàng)建、連接、查詢、更新和刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù),以及管理數(shù)據(jù)庫(kù)結(jié)構(gòu)和其他相關(guān)工作等。 另外,不同的數(shù)據(jù)庫(kù),對(duì)應(yīng)不同的編程語(yǔ)言提供了不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包,如:MySQL提供了Java的驅(qū)動(dòng)包

    2024年02月15日
    瀏覽(790)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包