反饋已提交

網絡繁忙

报表工程查询数据与数据库数据时间相差8小时

1. 概述

1.1 问题描述

用户的外接数据库为 MySQL 数据库,日期字段的类型是 datetime 。Navicat 查看的日期数据和数据预览数据相差 8 小时。

1.2 关于时区

  • CST:中国标准时间。

  • GMT (Greenwich Mean Time):格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

  • UCT (Universal Time Coordinated):世界标准时间。

GMT + 8 = UTC + 8 = CST 。

1.3 解决思路

排查顺序:系统时区>数据源时区>Tomcat时区。

1)确认服务器系统时间和数据库系统时间相同,例如都为东八区。

2)使用数据库小工具连接取数,查询出的时间与 Navicat 一致,判断是数据源和报表工程时区不同。

3)参考本文第三章节内容,修改数据源时区。

4)若 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)重启工程。

附件列表


主題: 目录错乱的简中文档合集
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

文 檔回 饋

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

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

不再提示

10s後關閉