Can Timestamp datatype insert UTC time rather than the local time(System_time_Zone)
有没有一种方法,Timestamp可以插入UTC时间而不是本地时间(System_time_Zone)。
根据MySQL文档 -
"MySQL将TIMESTAMP值从当前时区转换为UTC进行存储,然后从UTC转换回当前时区进行检索。"
当我在timestamp数据类型中插入now()时,保存的值是本地时间,与Datetime数据类型相同。 Datetime的日期值似乎是静态的,但TimeZone会在更新Session时区时不断更新。
MySQL Workbench 6.3查询 - 我目前处于EDT时区。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | desc datedemo ; -------------------------------------------------- | mydatetime | 'datetime' | -------------------------------------------------- | mytimestamp |'timestamp' | -------------------------------------------------- | utcdate | datetime | -------------------------------------------------- SELECT @@global.time_zone, @@session.time_zone; -------------------------------------------------- | @@global.time_zone|'@@session.time_zone' -------------------------------------------------- | SYSTEM | SYSTEM | -------------------------------------------------- insert into datedemo values (now(), now(),UTC_TIMESTAMP()); select * from datedemo ---------------------------------------------------------------------- | mydatetime | mytimestamp | utcdate ---------------------------------------------------------------------- | 2017-06-21 16:20:28| 2017-06-21 16:20:28 |2017-06-21 20:20:28 ---------------------------------------------------------------------- SET SESSION TIME_ZONE ="+00:00"; // UTC time ZONE select * from datedemo ---------------------------------------------------------------------- | mydatetime | mytimestamp | utcdate ---------------------------------------------------------------------- | 2017-06-21 16:20:28| 2017-06-21 20:20:28 |2017-06-21 20:20:28 ---------------------------------------------------------------------- |
timeStamp数据类型在哪里保存UTC时间?根据我的理解,它只是使用会话timeZone并相应地转换时间,这也是由Datetime完成的,唯一的区别是datetime是静态的,但TimeStamp使用客户端timeZone继续移动。
我可能完全错了,但如果能回答这个问题,我将不胜感激。
来自MySQL文档:
MySQL converts
TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such asDATETIME .)
无论您在
放入
如果您未在会话期间明确设置会话时区,则全局时区仅定义会话时区的设置。
通常,如果您知道要跨时区进行转换,请使用
创建像