MySQL now() 更改时区

Posted

技术标签:

【中文标题】MySQL now() 更改时区【英文标题】:MySQL now() change timezone 【发布时间】:2012-05-30 01:22:12 【问题描述】:

我正在使用以下 INSERT 语句:

INSERT INTO messages SET `to` = '".$to."', `from` = '".$this->userid."', `title` = '".$title."', `message` = '".$message."', `created` = NOW()

但是,它使用我的服务器时间(美国/蒙特利尔)。我想要亚洲的时区(Asia/Calcutta)

同一个查询可以做到吗?

【问题讨论】:

【参考方案1】:

最好在查询中直接使用 SQL 格式:

..`created` = CONVERT_TZ(NOW(),'SYSTEM','Asia/Calcutta')..

【讨论】:

感谢您使用 SYSTEM 而不是其他 hacky 解决方案 谢谢。有关时区的更多详细信息,请参阅***.com/questions/9808160/mysql-time-zones【参考方案2】:

您可能希望继续使用 MySQL 中的 CONVERT_TZ() 函数。它基于您的操作系统使用的Olson database。

Here 是文档。

【讨论】:

您好,但不工作“插入消息集to = '".$to."', from = '".$this->userid."', title = '".$title."', message = '".$message."', created = CONVERT_TZ(NOW(), 'America/Phoenix', 'Asia/Calcutta)" 对创建的 SELECT CONVERT_TZ(now(),'US/Eastern','US/Central') 进行子选择; 相反,您可能需要填充时区表,参考:***.com/questions/2523286/mysql-convert-tz mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql【参考方案3】:

打开与 MySQL 的连接后,运行以下查询:

SET time_zone = timezone;

然后,您执行的所有功能都将为该连接在该时区运行(即,直到您关闭到数据库的“链接””。

如果您拥有适当的权限,您可以“永久”/全局锁定它。 Tiemzone 字符串是标准字符串,正如您在问题中所使用的那样。

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

【讨论】:

【参考方案4】:
$myDateTime = new DateTime('2012-05-23 17:01', new DateTimeZone('GMT'));
$myDateTime->setTimezone(new DateTimeZone('Asia/Kolkata'));
echo $myDateTime->format('Y-m-d H:i');

修改上述代码后,如所需格式;您可以使用$myDateTime 变量插入数据库。

【讨论】:

以上是关于MySQL now() 更改时区的主要内容,如果未能解决你的问题,请参考以下文章

在不更改时间的情况下设置时区 - Python

从 phpMyAdmin 更改 mysql 时区

grails/mysql 时区更改

mysql更改时区

MySQL时区更改?

更改 MySQL 中的连接时区