1、时区
同一个时间点,比如 英国的1970-01-01 00:00:00 的那一个时刻,在东八区北京时间是:1970-01-01 08:00:00
所以,时间戳的秒数也会不同:
北京时间戳为0,对应的时间点是 1970-01-01 08:00:00
英国的时间戳为0,对应的时间点是 1970-01-01 00:00:00
2、MySQL的时间存储
dateTime 没有时区概念,相当于字符串入库
timestamp 存储时,MySQL将TIMESTAMP
值从当前时区转换为UTC时间进行存储,查询时,将数据从UTC转换为检索的当前时区。(其他类型(如DATETIME)不会发生这种情况。)
参考链接:https://blog.csdn.net/m0_38072683/article/details/105011313
3、Java连接MySQL获取时间如何展示
我们想要的情况:
如果数据库之中存储的时间是 北京时间 1970-01-01 08:00:00
如果是北京的用户,看到的时间是 1970-01-01 08:00:00
如果是英国的用户,看到的时间是 1970-01-01 00:00:00
Java程序而言,如果MySQl之中存储的是timestamp,那么保证连接会话的timezone是对应的时区即可,获取到的时间是MySQL处理过的对应的时区的时间
如果MySQL存储的是datetime,那么在字段的 jakson 解析时候按照对应的时区解析转换时间;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
TRANSLATE with x
English
TRANSLATE with
COPY THE URL BELOW
Back
EMBED THE SNIPPET BELOW IN YOUR SITE
Enable collaborative features and customize widget: Bing Webmaster Portal
Back
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/tech/database/244805.html