查詢Mysql庫中的時間比正常時間少1小時
阿新 • • 發佈:2021-01-08
夏令時
前言
今天實施找我提了一個關於時間的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時,夏令時結束。(注:摘抄百度百科)
結束
不由感嘆java真的好強大,只要心還在跳,就要努力學習,各位加油呦!