数据库时区的自我理解

1.JPA

转化 OffsetDateTime 和 ZoneDateTime

不考虑时区 只是把字面量放入 并指定时区 UTC 

Date 会根据时区 来转化 

时区设置为 +08:00 那么 它会先 把字面量的时间减少8小时 在转化为时间戳,也就是转化为绝对时间戳,返回,并且按照服务器所在的时区显示

时区设置为 +00:00 那么它 就直接把 字面量转化为时间戳 ,然后按照服务器所在的时区显示

2.controller

通过 requestparam传入的参数 默认是东八区 会转化

通过json传入的参数  会根据 jackson 给的时区 转化 默认是UTC 

3.数据库存储类型 datetime 和 timpstamp

都是存储字面量 

第一个就是存储字面量本身转化为二进制

第二个是存储字面量转化的时间戳 

JDBC 会根据 serverTimeZone 把 这两个类型 转化为 绝对时间戳 ,然后 放入 Date类型  或者 LocalDateTime 类型 都是 根据 系统服务器默认时区进行转化 

例如

数据库存储的字面量为 

2025-02-16 09:06:45.992000

你serverTimezone指定的是 Asia/Shanghai 

合并的时间就是 

2025-02-16 09:06:45.992000+08:00

那么转化为绝对时间戳 的字面量时间就是

2025-02-16 01:06:45.992000+00:00

最后在根据系统服务器时区比如 系统服务器时区是 Asia/Shanghai 那么就会转化为

2025-02-16 09:06:45.992000+08:00

你serverTimezone指定的是UTC </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值