mySQL 将 NOW() 存储在正确的服务器时区吗? [复制]

Posted

技术标签:

【中文标题】mySQL 将 NOW() 存储在正确的服务器时区吗? [复制]【英文标题】:mySQL store NOW() in the correct server timezone? [duplicate] 【发布时间】:2016-05-20 03:52:43 【问题描述】:

我设置了 phpmysql conf 文件 要有默认时区 = 'Europe/Rome' (或者至少我认为我做到了)

如果我查询 mysql

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

mysql> SELECT CURRENT_TIMESTAMP(); // it's 6:38pm in NYC now
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2016-02-09 18:38:45 |
+---------------------+

但我住在纽约,服务器位于美国(MediaTemple),当我测试我的查询时,它会保存以 24 小时格式转换的 New_York 时间:

例如。我刚刚使用...time = NOW()... 在我的表中输入了一行 在纽约是下午 6 点 31 分 但mysql行中的时间显示2016-02-09 18:31:47 我期待在罗马/柏林看到2016-02-09 00:31:47 的地方

我做错了什么??那我需要在哪里设置时区呢?

【问题讨论】:

你从命令行中的date得到什么。 askubuntu.com/questions/323131/setting-timezone-from-terminal/… 如果您没有使用SET 的超级权限,则需要使用使用日期的时区php.net/manual/en/function.date-default-timezone-set.php 的PHP 方法。这就是我必须在一些不允许这些特权的服务器上做的事情。或在***.com/a/19069310 中使用SELECT UNIX_TIMESTAMP... 【参考方案1】:

SYSTEM 表示 MySQL 正在使用操作系统的时区。在该机器上的终端中发出以下命令:

date +%Z

这也是您的查询中使用的时区。如果这不是您所期望的,请在操作系统级别更改时区。这取决于您运行的操作系统(您没有提到)。

【讨论】:

以上是关于mySQL 将 NOW() 存储在正确的服务器时区吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在存储过程 MySql 中设置默认时区

在 PHP 和 MySQL 中设置时区

MySQL now() 更改时区

选择 Now() 作为 CurrentDateTime mysql 时区

在数据库中存储时区的正确方法?

如何为 AWS RDS 实例设置数据库时区 [重复]