2012-10-03 35 views
0

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

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

我有2列,创建(DATETIME)和时区(VARCHAR)

在PHP中的表,我会收集以下内容:

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

INSERT语句怎么会这么IT卖场$创建,是(UTC),没有它存储它作为我的服务器的默认时区?

我需要将它从UTC转换为我的服务器在PHP中的本地时间,还是可以在MySQL中进行一些操作?

回答

0

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

为什么你不能只存储日期?我相当确信不会发生转换。而且,为什么您还需要时区信息?将它转换为当地时间后显示,这不是更有意义吗?对于查看信息的特定用户? “

”当前时区设置不会影响UTC_TIMESTAMP()等函数或DATE,TIME或DATETIME列中的值显示的值,也不会影响以UTC存储的这些数据类型中的值;时区适用于它们只有当从TIMESTAMP值转换时,如果您想为DATE,TIME或DATETIME值使用特定于语言环境的算术,请将它们转换为UTC,执行算术运算,然后再转换回来。时区信息以便从TIMESTAMP()和类似函数返回本地时间,而不是用于即时转换插入或选择的数据。

+0

我正在显示捕获时间的本地时间,而不是查看客户端(即浏览器)的时间或本地时间。 - 听起来很有趣:P – steve

+0

没问题,所以时间戳和mysql使用其设置的时区来进行转换,但是datetime只是保存或选择时没有转换的日期和时间?啊,只是看到你的更新... – steve

+0

是的,错过了那部分,DATETIME不受影响,TIMESTAMP不是。我想说,在具有单独时区的DATETIME中将其存储为UTC的时间将是wya,或者如果您只希望将其显示为本地时区,则将时区时间存储为UTC时间。从UTC转换时,您还必须考虑最终的DST,因此在这方面存储本地时间可能更容易。 – jishi