java.util.Date接收pg数据库timestamp(6)类型的值,出现时区问题

文章讲述了开发者在处理JSON数据到数据库存储过程中遇到的时间格式问题,包括LocallDatetime类型与timestamp的兼容性,以及时区转换导致的时间偏差。解决方案包括使用SQL的时区转换和Spring框架的Jackson配置来确保一致性。
摘要由CSDN通过智能技术生成

        开发的过程遇见的了这个问题,起初因为一个接口,接收json数据,通过JSONArray 转为list集合,实体类中的一个LocallDatetime 类型的变量,在接收“2024-02-21 13:21:37”格式的时间,存入数据库之后,对应的数据库字段类型是timestamp(6),会出现隐藏时间,毫秒值甚至微妙值。导致后续一个重复校验用到这个字段时,校验无法生效,后续通过将json里这字段的值改为记录时间戳,实体类对应字段改为java.util.Date类型,存入数据库,由数据库转为日期格式,保证了时间上的一致。但之后发现,数据库该时间值查询出来,赋值给java.util.Date类型的字段后,出现了时区问题,例如数据库中是“2024-03-01 10:02:30”,查询出来赋值给该字段后时间是“2024-03-01 03:02:30”,相差七个小时。

        解决方案:

第一种是 查询sql中给该字段设置时区,该方法在postgreSql有效,其他数据库未验证

select 列名 at time zone 'UTC' as 别名 from 表

第二种,在配置文件中设置

        第一个设置日期格式,第二个根据时区加减对应时间

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone: GMT+7

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值