在一台服务器上,当我运行:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)

在另一台服务器上:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)

当前回答

如果使用指定时区会导致错误:

mysql> SET GLOBAL time_zone = "Asia/Bangkok";    
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Bangkok'

你可以试试:

mysql_tzinfo_to_sql tz_file tz_name | mysql -u root -p mysql

然后:

SET GLOBAL time_zone = "Asia/Bangkok";
SET time_zone = "+07:00";
SET @@session.time_zone = "+07:00";

检查一下现在几点了:

SELECT NOW();

裁判: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html#time-zone-installation

其他回答

编辑MySQL配置文件

sudo nano /etc/mysql/my.cnf

滚动并将这些添加到底部。更改到相应的时区

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

重新启动服务器

sudo service mysql restart

简单地在你的MySQL服务器上运行:

SET GLOBAL time_zone = '+8:00';

你所在的时区是+8:00。

在Windows (IIS)上,为了能够SET GLOBAL time_zone = 'Europe/Helsinki'(或其他什么),MySQL time_zone描述表需要首先填充。

我是从这个链接https://dev.mysql.com/downloads/timezones.html下载的

运行下载的SQL查询后,我能够设置全局time_zone和解决问题,我有SELECT NOW();返回的是格林尼治标准时间而不是英国夏令时。

要在MariaDB中设置标准时区,必须转到50-server.cnf文件。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

然后您可以在mysqld部分中输入以下条目。

default-time-zone='+01:00'

例子:

#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

### Default timezone ###
default-time-zone='+01:00'

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

必须通过配置文件进行更改,否则MariaDB服务器重启后将重置mysql表!

要为当前会话设置它,请执行:

SET time_zone = timezonename;