當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

報表工程查詢數據與數據庫數據時間相差8小時

1. 概述

1.1 問題描述

用戶的外接數據庫爲 MySQL 數據庫,日期字段的類型是 datetime 。Navicat 查看的日期數據和數據預覽數據相差 8 小時,如下圖,左側是使用 Navicat 查看,右側是數據集預覽:

1613634503139137.png

1.2 關於時區

  • CST:中國标準時間。

  • GMT (Greenwich Mean Time):格林威治标準時間,指位於英國倫敦郊區的皇家格林尼治天文台的标準時間,因爲本初子午線被定義在通過那裏的經線。

  • UCT (Universal Time Coordinated):世界标準時間。

GMT + 8 = UTC + 8 = CST 。

1.3 解決思路

排查順序:系統時區>數據源時區>Tomcat時區。

  • 确認服務器系統時間和數據庫系統時間相同,例如都爲東八區。

  • 使用數據庫小工具連接取數,查詢出的時間與 Navicat 一緻,判斷是數據源和報表工程時區不同。

  • 參考本文第三章節内容,修改數據源時區。

  • 若 Tomcat 時區不正确,報表平台中查看到的日志時間也會是不正确的,參考本文第四章内容,修改 Tomcat 時區;若日志時間正确,則無需修改 Tomcat 時區。

2. 系統時區

2.1 Linux 系統

2.1.1 查看當前時區

使用date -R查看Linux 查看當前時區,如下圖所示:

1613635002946291.png

2.1.2 方案一:修改此次登錄時區

方法對應語句
方法一:修改 Linux 當前時區tzselect
方法二:僅限於 RedHat Linux 和 CentOStimeconfig

tzselect語句爲例,如下所示:

1)輸入tzselect修改當前時區,如下圖所示:

1613636188815381.png

2)輸入TZ='Asia/Shanghai';export TZ使時區生效,如下圖所示:

8.png

2.1.3 方案二:永久修改時區

TZ='Asia/Shanghai';export TZ添加到/home/username/.profile文件中,然後重新登錄即可。

注:.profile 文件默認隐藏,需要使用 ls -a 才能看到。

1613699692530899.png

2.2 Windows 系統

找到日期和時間,即可修改時區。如下圖所示:

1613636994416734.png

3. 數據源時區

在定義數據連接的 URL 後,添加參數,将數據源的時區設置爲東八區。如下圖所示:

&useTimezone=true&serverTimezone=GMT%2B8

1613637466611872.png

4. Tomcat 時區

若 Tomcat 時區不正确,報表平台中查看到的日志時間也會是不正确的,若日志時間正确,則無需修改 Tomcat 時區,本章提供修改 JDK1.8(Tomcat) 時區的方法。

4.1 Linux 系統

1)編輯%Tomcat_HOME%\bin目錄下的 catalina.sh,添加 JAVA_OPTS 參數,将數據源的時區設置爲東八區:

JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+08"

12.png

2)重啓工程。

4.2 Windows 系統

1)編輯%Tomcat_HOME%\bin目錄下的 catalina.bat,添加 JAVA_OPTS 參數,将數據源的時區設置爲東八區:

set JAVA_OPTS=%JAVA_OPTS% -Duser.timezone=GMT+08

13.png

2)重啓工程。

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s後關閉

反饋已提交

網絡繁忙