MySQL - NOW()如果在触发器或选择中,它的值不同

时间:2015-11-24 12:44:24

标签: mysql

我遇到了MySQL NOW()函数的问题

如果我跑:

SELECT NOW();

我得到了价值:

2015-11-24 13:35:00 (correct value with Swedish winter-time)

但是如果我在触发器函数中使用NOW()来更新时间戳列,而另一列更改如下:

SET NEW.timestamp = NOW(); 

我得到了价值:

2015-11-24 12:35:00

我如何解决这个问题或者为什么会这样?

2 个答案:

答案 0 :(得分:1)

要使用NOW()获取当前日期和时间,请根据您所在的国家/地区设置时区以获取正确的日期和时间。 请查看链接here

如果要更改MySQL服务器的时区以调整NOW()函数返回的当前日期和时间,请使用以下语句:

SET time_zone = your_time_zone;

答案 1 :(得分:1)

MySQL有多种指定时区的方法 - 服务器有一个默认时区,每个客户端也可以在每个连接的基础上指定自己的时区。

我认为您的SELECT正在使用客户端连接指定的时区,而触发器正在使用服务器的默认时区。

https://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html