我正在尝试将一些数据插入数据库,其中该表有一列 date
,其类型为 timestamp
,默认值为 CURRENT_TIMESTAMP
.
我尝试了以下方法来更改时区:
在 php-5.6.ini 文件中,修改以下行:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/Los_Angeles
保存文件并调用sudo service httpd restart
以及sudo service mysql restart
。我还想指出,我正在使用 ec2 实例,如果这有任何影响的话。
我使用的是 slim 框架,所以我尝试在 index.php
文件中调用 date_default_timezone_set('America/Los_Angeles');
,仍然没有变化.
无论我将时区设置为美洲还是亚洲,时钟总是晚一个小时。
还尝试了 ini_set('date.timezone', '亚洲/新加坡');
尝试在 mySql 工作台内调用 SET time_zone = 'America/New_York'
但返回 #1298 - 未知或不正确的时区:
。因此,在终端内我调用了 mysql_tzinfo_to_sql/usr/share/zoneinfo ,它似乎做了一些事情,但实际上并没有改变任何东西。还是同样的问题
最佳答案
php.ini
设置不会更改 mysql 服务器的时区。它仅更改 apache 服务器的时区。要更改 mysql 时区,请发出命令:
SET time_zone = 'America/New_York';
来自 mysql 终端。这将自动更改从所有 TIMESTAMP
字段获取的日期/时间。
如果您想从 php 执行此操作,则不要传递默认的 timestamp
值,而是从 php 传递值,如下所示:
$datetime = date('Y-m-d H:i:s');
并在timestamp
列中插入$datetime
的值。
关于php - 无法更改 phpmyadmin 的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44539113/