【问题标题】:SELECT CONVERT_TZ command isn't affecting MySql server timezoneSELECT CONVERT_TZ 命令不影响 MySql 服务器时区
【发布时间】:2013-07-05 15:10:48
【问题描述】:

我在一个共享的 unix 服务器上。

它有默认时区-06:00:00

根据MySQL Manual,我正在尝试通过执行以下命令来设置我的时区:

SELECT CONVERT_TZ('2004-01-01 12:00:00','-06:00','+07:00');

该命令正在执行,但不影响时区。服务器或我的SQL 命令有什么问题?

谢谢,

【问题讨论】:

  • 我在手册中没有看到任何暗示CONVERT_TZ() 可用于设置以下查询的时区。顾名思义,它将日期时间值从一个区域转换为另一个区域。而已。 dev.mysql.com/doc/refman/5.5/en/…
  • @Pekka 웃 是的,但是该命令没有将默认时区转换为我的。
  • 我不明白你的意思。你能澄清一下吗?
  • 我想通过执行该命令将服务器时区从 GMT '-06:00' 转换为 GMT '+07:00'。但该命令不会影响服务器时区。
  • 但是您为什么期望它会影响服务器时区?它不是为此而设计的。查看dev.mysql.com/doc/refman/5.5/en/time-zone-support.html 了解有关 mySQL 如何处理此问题的信息

标签: mysql date datetime time timezone


【解决方案1】:

如果要查看mysql服务器时区

使用下面的 SQL 查询

SELECT @@global.time_zone, @@session.time_zone;

如果你想改变时区,你可以试试这个

set @@global.time_zone = '+07:00'

这将改变mysql服务器的时区。

注意:如果您重新启动服务器,更改将被刷新,在这种情况下,您应该再次触发上述查询。

希望这会有所帮助。

【讨论】:

  • 您的命令不向后兼容服务器。因此它将时区返回为SYSTEM。此外,我没有超级权限来执行命令set @@global.time_zone = '+07:00' 在我的情况下SELECT @ @system_time_zone 与我的服务器兼容以检查它的时区。谢谢,
【解决方案2】:

您在一个共享的 unix 服务器上,因此您可能不想更改 MySQL 服务器的时区(除非您想弄乱使用它的其他人)。

查看 CONVERT_TZ 的文档 - 它不设置时区,它将日期时间从一个时区转换为另一个时区。它返回一个日期时间。

对于您的示例,SELECT CONVERT_TZ('2004-01-01 12:00:00','-06:00','+07:00'); 正确返回 2004-01-02 01:00:00

如果您更改连接的时区,这不会对其他用户产生任何影响,但它会允许您在连接上的所有交易以不同的默认时区进行。使用:

SET time_zone = {timezone}; -- where {timezone} is the timezone you want to use

有关文档,请参阅 http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

【讨论】:

  • 感谢您提供有用的信息。不幸的是,我还没有找到任何干净的参考,据说在共享服务器上应该使用基于每个连接的 mysql 查询来设置预期时区。再次感谢。我终于想通了。
  • 谢谢。您可以通过说“显示像'time_zone'这样的变量;”来查看 time_zone 的设置。这可能会向您表明服务器正在使用 SYSTEM 的时区概念。要更改连接时区,当然,如果您在芝加哥,请使用“set time_zone = 'America/Chicago'”。该字符串必须是在 mysql.time_zone_name.Name 中找到的值。
猜你喜欢
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-26
  • 2016-11-13
  • 2022-01-13
  • 2015-09-10
  • 2019-01-14
相关资源
最近更新 更多