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

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)

当前回答

您可以在启动服务器时指定服务器的默认时区,请参阅http://dev.mysql.com/doc/refman/5.1/en/server-options.html,特别是——default-time-zone=timezone选项。可以查看全局时区和会话时区

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

使用set语句设置其中一个或两个,更多细节请参见http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html。

其他回答

古老的问题,还有一个建议:

如果你最近改变了操作系统的时区,例如通过:

unlink /etc/localtime
ln -s /etc/usr/share/zoneinfo/US/Eastern /etc/localtime

... MySQL(或MariaDB)直到重启db服务才会发现:

service mysqld restart

(or)

service mariadb restart

您必须设置您的位置时区。接下来就是下面的过程 打开您的MSQLWorkbench 像这样写一个简单的SQL命令;

select now();

url也可以是这样的;

url = "jdbc:mysql://localhost:3306/your_database_name?serverTimezone=UTC";

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

SET GLOBAL time_zone = '+8:00';

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

通过登录MYSQL服务器来设置MYSQL时区。为是

SET SESSION time_zone = '+5:30';

然后运行SELECT NOW();

对于仍然有这个问题的人:

value="jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC"

为我工作。只需在末尾附加?serverTimezone=UTC。