我需要将一些表从MySQL数据库移到PostgreSQL。 所以我通过检查系统变量检查了MySQL服务器使用的时区:
system time zone CET
CET
- 据我所知 - 与CEST
形成对比 - 永远不会超过UTC+1
。
CEST
是夏天UTC+2
。根据{{3}}
但SELECT CURRENT_TIMESTAMP()
实际上会返回CEST
时间(UTC+2
):
为什么?
答案 0 :(得分:2)
所以我查了一下,哪个时区是 MySQL服务器通过检查系统使用 变量
你是怎么做到的?
请尝试此查询并告诉我结果:
SELECT @@global.time_zone, @@session.time_zone;
可以有三种类型的结果。
这意味着MySQL使用操作系统的时区设置
这是UTC(协调世界时)
的差异与上面基本相同,但是你已经在MySQL中填充了你的时区表。
您可以看到,datetime
值在内部由MySQL存储为UTC值。
因此,当您在SYSTEM变量设置为'Europe / Berlin'/'+ 01:00'的情况下在表中插入'2011-03-30 12:34:56'时,MySQL会计算'2011-03-的整数表示形式30 11:34:56',保存数据库中的值。当您查询日期时间值时,MySQL再次添加该小时(假设您的时区设置未更改),并显示值“2011-03-30 12:34:56”