有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java MYSQL如何将日期和时间存储为UTC而不是EST?

在我的应用程序中,我有以下两列:

start - datetime
end - datetime

对应的java字段:

@JsonProperty
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "start")
private Calendar start;

@JsonProperty
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "end")
private Calendar end;

每当前端调用后端来持久化实体时,它总是保存为EST时间

例如,如果时间以12pm的形式发送,它将以8am.的形式保存在数据库中

如何确保数据库中节省的时间始终在UTC

我尝试将start列的类型更改为timestamp,但这并没有解决问题


共 (1) 个答案

  1. # 1 楼答案

    时间戳数据类型存储在MySql中的UTC中。(日期时间数据类型不是。)

    存储它们时,它们会从连接或服务器的时区设置转换为UTC。当你取回它们时,它们会被翻译回来

    要做到这一点,您需要确保每个连接的时区设置正确。如果在打开连接时或在处理任何时间戳数据之前这样做,就可以实现这个目的

    SET time_zone = 'America/Halifax';
    

    全球网络应用(例如WordPress)有一个用户时区偏好设置,因此每个用户都可以在自己的本地时间查看时间

    如果要检索UTC时间,请先执行以下操作:

    SET time_zone = 'UTC';