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

MYSQL - how to store date and time as UTC rather than EST?

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

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,但这并没有解决问题。

TIMESTAMP 数据类型在 MySql 中以 UTC 存储。 (DATETIME 数据类型不是。)

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

要完成这项工作,您需要确保每个连接的时区设置都是正确的。如果您在打开连接时或在处理任何 TIMESTAMP 数据之前这样做,这样的事情就可以解决问题。

SET time_zone = 'America/Halifax';

全球网络应用程序(例如 WordPress)具有时区用户首选项设置,因此每个用户都可以看到自己当地时间的时间。

如果您想检索 UTC 时间,请先执行此操作:

SET time_zone = 'UTC';