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';
在我的应用程序中,我有以下 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';