mySQL 将 NOW() 存储在正确的服务器时区吗? [复制]
Posted
技术标签:
【中文标题】mySQL 将 NOW() 存储在正确的服务器时区吗? [复制]【英文标题】:mySQL store NOW() in the correct server timezone? [duplicate] 【发布时间】:2016-05-20 03:52:43 【问题描述】:我设置了 php 和 mysql 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() 存储在正确的服务器时区吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章