我有一个移动应用和休息服务。移动应用程序将生成并向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语句如此存储$创建,按原样(UTC),而不将其存储为我的服务器的默认时区?
我是否必须将其从UTC转换为我的服务器在PHP的本地时间,或者它可以在MySQL中进行一些改进吗?
答案 0 :(得分:0)
据我所知,MySQL不支持日期列上的时区信息,例如PostgreSQL。
为什么不能按原样存储日期?我很确定不会进行转换。而且,为什么还需要时区信息呢?以后在显示时将其转换为当地时间是否更为相关?对于正在查看信息的特定用户?
“当前时区设置不会影响UTC_TIMESTAMP()等函数显示的值或DATE,TIME或DATETIME列中的值。这些数据类型中的值也不会以UTC格式存储;时区仅适用于它们从TIMESTAMP值转换时。如果您想要DATE,TIME或DATETIME值的特定于语言环境的算法,请将它们转换为UTC,执行算术,然后转换回来。“source https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html
意思是,MySQL只利用时区信息从TIMESTAMP()和类似函数返回本地时间,而不是对插入或选择的数据进行即时转换。