gpt4 book ai didi

mysql - 将使用 ON UPDATE CURRENT_TIMESTAMP 设置的值转换为 UTC

转载 作者:行者123 更新时间:2023-11-30 01:11:27 29 4
gpt4 key购买 nike

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

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

我还发现了使用 ON UPDATE UTC_TIMESTAMP 的建议,但发现这会产生语法错误,并且文档中不支持。

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

理想情况下,此子句将检测服务器的时区,因此该值不会被硬编码,并且适用于服务器设置的任何时区。

最佳答案

由于没有人回答这个问题,所以这里是我最终使用的解决方法:

由于我从 php 访问 mySQl,因此我使用 php 通过计算服务器时间与 UTC 之间的秒数差异,然后在 SQL 语句中减去该值来解决问题。

下面是计算服务器时间与 utc 之间秒数差异的 PHP 函数:

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

以下是我如何在 PHP 中构建 SQL 语句来选择自 1970 年 1 月 1 日以来以 utc 为单位的时间(以秒为单位):

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

关于mysql - 将使用 ON UPDATE CURRENT_TIMESTAMP 设置的值转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453056/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com