10-TDengine之SpringBoot读取的时间与数据库中存储的时间相差8小时

简介: 10-TDengine之SpringBoot读取的时间与数据库中存储的时间相差8小时

背景


一开始的配置内容如下,重点关注数据库连接时的 timezone ,这也是 TDengine 官方集成 MyBatisPlus 时的 demo 里的配置方式;

spring:
  datasource:
    driver-class-name: com.taosdata.jdbc.TSDBDriver
    url: jdbc:TAOS://hadoop1:6030/iot?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
    username: root
    password: taosdata

另外,为了表示数据精度,我在实体类上配置了日期时间格式以及时区;

@Data
public class Power {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
    private Timestamp ts;
    private Integer voltage;
    ...
}

使用以上配置后,凡是直接返回实体类,或者使用 resultMap 映射为实体类的接口响应中时间都正常; 但是当使用 resultType="java.util.Map" 方式直接返回数据库中结果后,发现接口返回中的时间与数据库中的时间相比慢了8小时。

image.png


接口返回中的时间与数据库中的时间相比快了8小时


接着,我改了数据库连接中的 timezone=GMT+8 ,发现接口返回中的时间与数据库中的时间相比竟然快了8小时。

spring:
  datasource:
    driver-class-name: com.taosdata.jdbc.TSDBDriver
    url: jdbc:TAOS://hadoop1:6030/iot?charset=UTF-8&locale=en_US.UTF-8&timezone=GMT+8
    username: root
    password: taosdata


接口返回中的时间与数据库中的时间一致


  • 方法一


继续修改数据库连接中的 timezone=GMT%2b8 ,即把上一种方法的+为 %2b ,发现接口返回中的时间与数据库中的时间相一致。

spring:
  datasource:
    driver-class-name: com.taosdata.jdbc.TSDBDriver
    url: jdbc:TAOS://hadoop1:6030/iot?charset=UTF-8&locale=en_US.UTF-8&timezone=GMT%2b8
    username: root
    password: taosdata


  • 方法二


也可以将数据库连接中的 timezone=Shanghai ,这与我们使用 MySQL 数据库连接时一样,发现接口返回中的时间与数据库中的时间相一致。

spring:
  datasource:
    driver-class-name: com.taosdata.jdbc.TSDBDriver
    url: jdbc:TAOS://hadoop1:6030/iot?charset=UTF-8&locale=en_US.UTF-8&timezone=Shanghai
    username: root
    password: taosdata
  • 方法三


依然采用 timezone=UTC-8 ,不过增加全局的 jackson 时区配置,发现接口返回中的时间与数据库中的时间相一致。

spring:
  datasource:
    driver-class-name: com.taosdata.jdbc.TSDBDriver
    url: jdbc:TAOS://hadoop1:6030/iot?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
    username: root
    password: taosdata
  jackson:
    time-zone: GMT+8


目录
相关文章
|
11天前
|
安全 Java 关系型数据库
springboot整合springsecurity,从数据库中认证
本文介绍了如何在SpringBoot应用中整合Spring Security,并从数据库中进行用户认证的完整步骤,包括依赖配置、数据库表创建、用户实体和仓库接口、用户详情服务类、安全配置类、控制器类以及数据库初始化器的实现。
38 3
springboot整合springsecurity,从数据库中认证
|
2天前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
11 2
|
5天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
12 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
5天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
11 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
11天前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
14 2
|
11天前
|
SQL Java 关系型数据库
Springboot引入jpa来管理数据库
Springboot引入jpa来管理数据库
15 0
Springboot引入jpa来管理数据库
|
14天前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
18 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
11天前
|
SQL Java 数据库连接
springBoot+Jpa(hibernate)数据库基本操作
springBoot+Jpa(hibernate)数据库基本操作
19 0
|
4天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
37 1
|
28天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
85 2
基于Java+Springboot+Vue开发的服装商城管理系统