如果时区为+00:00,为什么我的服务器显示utc和当前时间戳的不同时间戳?

时间:2015-04-02 08:05:54

标签: mysql timestamp-with-timezone

在进行研究时,我很好奇为什么我的服务器在执行以下查询时会显示不同的时间戳?

select current_timestamp(), UTC_TIMESTAMP(), convert_tz(UTC_TIMESTAMP(), 
@@session.time_zone,"+00:00") as timezone_utc, 
convert_tz(current_timestamp(), @@session.time_zone,"+00:00") as timezone_current

输出:

current_timestamp() || UTC_TIMESTAMP() || timezone_utc || timezone_current

2015-04-02 03:01:25 || 2015-04-02 08:01:25 || 2015-04-02 13:01:25 || 2015-04-02 08:01:25

1 个答案:

答案 0 :(得分:1)

因为你告诉它,它相信你所说的。 convert_tz(UTC_TIMESTAMP(), @@session.time_zone,"+00:00")表示采用当前的UTC时间,假装它实际是本地时间,然后通过添加与本地时区偏移量相反的方式将其转换为UTC。这是一个荒谬的事情,并得到一个荒谬的结果。