0

我有一个移动应用程序和休息服务。移动应用程序将生成并向 Web 服务提供 UTC 日期时间和时区。我需要使用 php 将这两个值存储到 mysql 中。

我正在从远程源获取日期时间,所以我不能使用 mysql 的 UTC_TIMESTAMP() 来生成“当前”UTC 时间。

我有一个包含 2 列的表,创建 (DATETIME) 和时区 (VARCHAR)

在 PHP 中,我将收集以下内容:

$created = "2010-09-30 12:31:10"; //Actual UTC time
$timezone = "America/Los_Angeles"

INSERT 语句将如何存储 $created,原样 (UTC),而不将其存储为我的服务器的默认时区?

我是否必须将其从 UTC 转换为我的服务器在 PHP 中的本地时间,或者它是否可以在 MySQL 中进行一些处理?

4

1 回答 1

0

据我所知,MySQL 不支持日期列上的时区信息,例如 PostgreSQL 就支持。

为什么不能按原样存储日期?我相当肯定不会发生转换。而且,你为什么还需要时区信息?稍后在显示时将其转换为本地时间不是更相关吗?对于查看信息的特定用户?

“当前时区设置不影响 UTC_TIMESTAMP() 等函数显示的值或 DATE、TIME 或 DATETIME 列中的值。这些数据类型中的值也不以 UTC 存储;时区仅在从TIMESTAMP 值。如果您想要 DATE、TIME 或 DATETIME 值的特定于区域设置的算术,请将它们转换为 UTC,执行算术,然后转换回来。“源https://dev.mysql.com/doc/refman/5.5 /en/time-zone-support.html

这意味着,MySQL 仅利用时区信息从 TIMESTAMP() 和类似函数返回本地时间,而不是用于插入或选择的数据的动态转换。

于 2012-10-03T08:03:02.960 回答