2013-10-18 46 views
0

在MySQL中,使用ON UPDATE CURRENT_TIMESTAMP指定创建了一个字段。这将保存服务器时区中的记录更新日期。我想将此时间转换为UTC时间。将使用ON UPDATE CURRENT_TIMESTAMP设置的值转换为UTC

服务器托管在无权访问服务器管理或MySQL管理的帐户中,因此我无法通过命令行界面或启动文件或任何其他方式直接在服务器或MySQL上设置时区。这包括SET time_zone命令或my.cnf文件。

我还发现了一个建议,使用ON UPDATE UTC_TIMESTAMP,但发现这给出了语法错误,并且在文档中不受支持。

所以我现在要做的是找到一个select子句,它将保存在服务器当前时区中的ON UPDATE CURRENT_TIMESTAMP所保存的值转换为UTC时间。

理想情况下,此条款将检测服务器的时区,以便该值不会硬编码,并可与服务器设置的任何时区一起使用。

回答

0

由于没人接这里这个问题是我最终使用的解决方法:

因为我从PHP我使用PHP通过计算与服务器时间为UTC在几秒钟之差来解决这个问题访问MySQL然后减去量在SQL语句中。

这里是PHP函数来计算UTC与服务器时间(秒)的区别:

function utcOffset() { 
    $serverTime = new DateTime('NOW'); 
    return $serverTime->getOffset(); 
} 

这里是我建在PHP中的SQL语句中UTC选择时间(秒),因为1-1- 1970年:

$sql .= "SELECT TIMESTAMPDIFF(SECOND, '1970-01-01', myServerTimeStampField)-".utcOffset()." AS timeInUTCSeconds FROM myTable"; 
相关问题