当前位置: 首页 > 面试题库 >

将MySQL数据库时区设置为GMT

齐朝明
2023-03-14
问题内容

我需要更改单个数据库的时区吗?

我知道我们可以在WHM中更改时区(我们正在使用hostgator的专用服务器),但是服务器上运行的大量旧版软件中有很多+6小时的编码(即服务器时区为CST,需要GMT时间,因此以前的开发人员会在代码中手动更改日期/时间-
很糟糕!)。

我现在正在开发一个新软件,并希望将其全部保存在GMT中,我知道我可以使用date_default_timezone_set(’GMT’),但是由于datetime列设置为CURRENT_TIMESTAMP,这无法解决MySQL插入问题,因为它将插入@
CST时区。


问题答案:

不,不可能更改MySQL实例中单个数据库的时区。

我们可以time_zone通过查询来检索服务器和客户端设置,如下所示:

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

我们还可以更改会话的客户端时区,或更改整个MySQL实例的时区。

但是,我们需要敏锐地意识到此更改将对现有客户端连接产生的影响,并且将解释实例中已存储的方式DATETIMETIMESTAMP值。

要在MySQL实例启动时设置服务器time_zone,我们可以/etc/my.cnf在以下[mysqld]部分下修改文件(或在读取mysql实例初始化参数的任何位置):

[mysqld]
default-time-zone='+00:00'

- 要么 -

也可以(不太理想)将--default_time_zone='+00:00'选项添加到mysqld_safe

注意:
更改MySQL服务器上的时区设置不会更改存储在现有DATETIME或TIMESTAMP列中的值,但由于它确实有效地更改了解释这些存储值的上下文,因此看起来所有值都已移位。(如果将08:00表示为CST,则服务器的time_zone从CST更改为GMT,则现在将相同的“
08:00”设为GMT 8AM,实际上就是2AM CST。

还请记住,TIMESTAMP列始终存储在UTC中,而DATETIME列没有时区。
http://dev.mysql.com/doc/refman/5.5/zh-
CN/datetime.html

每个客户端会话都可以为其自己的会话更改时区设置:

SET time_zone='-06:00';

但这并不能真正“解决”时区转换问题,它只是解决了转换问题。

应用程序层处理时区转换没有天生的“坏”之处。有时,这是处理的最佳地点。它只需要正确且一致地完成即可。

(您描述的设置奇怪的是,应用程序正在存储DATETIME值,就像将MySQL服务器time_zone设置为GMT,而将MySQL服务器time_zone设置为其他东西一样。)



 类似资料:
  • 问题内容: https://serverfault.com/questions/191331/should-servers-have-their-timezone- set-to-gmt-utc的 后续问题 是将MySQL时区设置为UTC还是将其设置为与服务器或PHP相同的时区?(如果不是UTC) 优缺点都有什么? 问题答案: 只要您为当前时区设置了正确的时间,知道您存储的datetime列的时区

  • 问题内容: 我有一个脱机的2008 sql数据库,我想联机并设置为多用户。当我执行以下命令时,使用SQL Server Management Studio-新查询窗口- 我收到此错误消息: 消息5064,级别16,状态1,行1目前无法更改数据库’mydb’的状态或选项。数据库处于单用户模式,并且当前有用户连接到该数据库。 消息5069,级别16,状态1,第1行的ALTER DATABASE语句失败

  • 我有一个mysql 5.7 docker容器。当我运行mysql命令时: 它显示了我当前时间的3小时(这是合乎逻辑的)。我想在配置文件中设置时区。遵循中的文档https://hub.docker.com/_/mysql/我在我的文件如下所示: 当我浏览容器中的文件时,文件。在该文件中,我尝试了一些解决方案,如: 或者是一种折衷方案,因为该区域每年必须更换两次(夏季/冬季),因此不太优雅: 但这一切

  • MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 在“据库”选项卡中,你可以设置从数据库导入窗口显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“名”列勾选要显示的数据库。 添加一个隐藏的数据库到列表 点击“+”按钮。 输入数据库名。 在数据库列表中勾选新添加的数据库。 从列表中移除一个数据库 在数据库列表中选

  • 在“数据库”选项卡中,你可以设置在从数据库导入窗口显示哪些数据库。这设置不是强制的。若要设置自定义数据库设置,请勾选“使用自定义数据库列表”。然后,从“数据库”列勾选要显示的数据库。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 和 MariaDB。 添加一个隐藏的数据库到列表 点击“添加数据库到列表”按钮。 输入数据库名。 在数据库列表中勾选新添加的数据