当前位置: 首页 > news >正文

idea、服务器、数据库环境时区不一致问题

文章目录

  • 前言
  • 为什么会出现时区不一致的情况?
  • 如何解决?
  • 总结

前言

在开发过程中碰到了这样一个问题:同一条sql在本地和线上执行情况不一致,在时间字段上出现不同。

  • sql:
    SELECTID AS id,version_number AS versionNumber,release_date AS releaseDate
    FROMlibrary_version
    WHERE is_valid = 't'<if test="libraryId != null">and library_id = #{libraryId}</if>
    ORDER BY(SELECT (regexp_matches(version_number, '^(\d+)'))[1]::int) DESC NULLS LAST
    limit #{pageSize} offset #{offset}
    
    其中release_date的类型为timestamptz
  • idea执行结果:
    在这里插入图片描述
  • 数据库、服务器中执行结果:
    在这里插入图片描述
    可以观察到releaseDate结果有所不同,idea将数据库中的时区默认转化为了东八区时间。而服务器上和数据库中均为UTC时区。

为什么会出现时区不一致的情况?

  • idea:连接数据库时设置了东八区,或者本地系统是东八区
  • 服务器:运行在UTC时区环境下
  • 数据库:可能存储的是UTC时间,不同客户端解释方式不同

也就是说三者时区不一致,导致线上和本地环境执行情况不同。

如何解决?

为了确保时区一致,我们可以检查以下配置是否完备:

  1. application配置:
    # 记得替换ip、port、数据库为自己的
    spring.datasource.base.jdbc-url=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/database?timezone=Asia/Shanghai
    # 在每个sql执行前增加语句,用于设置时区
    spring.datasource.hikari.connection-init-sql=SET TIME ZONE 'Asia/Shanghai'
    
  2. dockerfile
    确保部署的项目时区是东八区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
  3. 服务器环境
    # 检查服务器时区
    date
    timedatectl status
    # 设置服务器时区(Linux)
    sudo timedatectl set-timezone Asia/Shanghai
    

总结

  1. 检查代码中,数据库连接中是否设置好时区
  2. 检查dockerfile中是否设置了时区
  3. 检查服务器时区

以上为个人学习分享,如有问题,欢迎指出:)


文章转载自:

http://i6KWtMyk.tfpbm.cn
http://86QuA5iM.tfpbm.cn
http://tw1qWbVa.tfpbm.cn
http://wl8fLImm.tfpbm.cn
http://fqg1Gz3h.tfpbm.cn
http://LPshgg5k.tfpbm.cn
http://wueh1BY6.tfpbm.cn
http://9ldNk5w9.tfpbm.cn
http://2e9IDayK.tfpbm.cn
http://ebYhNu31.tfpbm.cn
http://C9dp1mwi.tfpbm.cn
http://fXWGH0rH.tfpbm.cn
http://XoCmGvc2.tfpbm.cn
http://Gkb6KSEM.tfpbm.cn
http://bCaaovFt.tfpbm.cn
http://V2cEa4JF.tfpbm.cn
http://5xcVoVmV.tfpbm.cn
http://nhYjuzeh.tfpbm.cn
http://E8VTUW1A.tfpbm.cn
http://vzGJT1rG.tfpbm.cn
http://oyl3avKR.tfpbm.cn
http://HDDmP22N.tfpbm.cn
http://NZFE1TW9.tfpbm.cn
http://QCLauR4v.tfpbm.cn
http://1ya0pkix.tfpbm.cn
http://ZbI1WFt5.tfpbm.cn
http://cXEum92p.tfpbm.cn
http://uYvUnfvw.tfpbm.cn
http://0E8B24ka.tfpbm.cn
http://6JsSZ3P7.tfpbm.cn
http://www.dtcms.com/a/374409.html

相关文章:

  • HarmonyOS 5.1.1版本图片上传功能
  • 2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
  • Puter+CPolar低成本替代商业网盘,打造私有云新势力
  • Deepoc科技之暖:智能助盲设备如何为视障家人点亮生活
  • 详细的vmware虚拟机安装教程
  • uni-app 项目中使用自定义字体
  • springboot maven 多环境配置入门与实战
  • 时序数据库选型指南:基于大数据视角的IoTDB应用优势分析详解!
  • 炫光活体检测技术:通过光学技术实现高效、安全的身份验证,有效防御多种伪造手段。
  • sqlite3的加解密全过程
  • Django REST Framework 中 @action 装饰器详解
  • 【Docker】一键将运行中的容器打包成镜像并导出
  • LLVM 数据结构简介
  • MCP与http、websocket的关系
  • 【modbus学习】
  • 【linux】sed/awk命令检索区间日志
  • 瑞派虹泰环城总院 | 打造“一站式宠物诊疗空间”,定义全国宠物医疗新高度
  • 数据分析画图显示中文
  • 嵌入式ARM架构学习3——启动代码
  • 2025云计算趋势:Serverless与AI大模型如何赋能中小企业
  • 如何利用 AWS 服务器优化跨境电商和 SEO 战略?
  • 大数据毕业设计-基于Python的中文起点网小说数据分析平台(高分计算机毕业设计选题·定制开发·真正大数据)
  • 小程序开发单行日历可滑动
  • 项目日记 -日志系统 -搭建基础框架
  • 计算机网络第四章(4)——网络层《ARP协议》
  • 探迹SalesGPT
  • 带有 Attention 机制的 Encoder-Decoder 架构模型分析
  • 利用易语言编写,逻辑为按照数字越大抽取率越前
  • leetcode 219 存在重复元素II
  • Redis(缓存)