1. 程式人生 > 其它 >查詢Mysql庫中的時間比正常時間少1小時

查詢Mysql庫中的時間比正常時間少1小時

技術標籤:專案常見問題mysqlspring boot

夏令時

前言

今天實施找我提了一個關於時間的Bug,聯絡人的出生日期設定的為1987-06-02 00:00:00年,但是頁面展示卻是1987-06-01 23:00:00,少了1小時,本以為是個小問題,結果專案組討論了半個小時。

正文

其實對於資料庫缺少8小時大家都很常見,肯定是因為時區的問題,第一反應去連線資料庫的配置檔案中url是否寫了serverTimezone這個引數,發現用的香港的時區,而且別人的日期是沒有問題的,就不是它的問題。
在這裡插入圖片描述
然後去排查資料庫是不是設定了時間,檢視資料庫時區。發現DBA設定了好了時區,在基礎上+08:00,所以排除了時區的問題。

show variables like'%time_zone';

在這裡插入圖片描述
然後發現數據庫裡是正常的1987-06-02,但是頁面就是1987-06-01 23:00:00,而且我們發現這個bug和時間的區間有關1995年的就沒問題。
請教專案組大佬,大哥也感覺很神奇,上報技術經理,經理也一頭霧水,最後我們不考慮專案,只考慮一小時問題,查到關於夏令時的事。
夏令時:從1986年到1991年的六個年度,每年從四月中旬第一個星期日的凌晨2時整(北京時間),將時鐘撥快一小時,即將錶針由2時撥至3時,夏令時開始;到九月中旬第一個星期日的凌晨2時整(北京夏令時),再將時鐘撥回一小時,即將錶針由2時撥至1時,夏令時結束。(注:摘抄百度百科)

跟我們的專案問題時間剛好吻合,我們的時區採用的Hongkang,查詢香港剛好執行夏令時。然後我們修改了專案時區解決問題,
在這裡插入圖片描述

結束

不由感嘆java真的好強大,只要心還在跳,就要努力學習,各位加油呦!