微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将MySQL数据插入到具有OFFSET的DATETIME字段中

如何解决将MySQL数据插入到具有OFFSET的DATETIME字段中

关于this MySQL documentation,我对如何将数据与插入语句中的OFFSET(显式提及)一起存储到DATETIME字段中感到有些困惑。 我到处都读到的是DATETIME字段按原样存储日期时间,并且对TimeZone没有任何影响。但是,我真的很想了解“什么数据存储在DATETIME字段中。而且,在从MysqL DATETIME字段发送,存储和接收数据的过程之间是否发生了TimeZone转换。 “。

注意: 我知道TIMESTAMP字段的工作原理。在没有显式附加TIMEZONE OFFSETS的情况下(如插入的第一行和第4行),我也可以预测将DATETIME字段的输出时的情况。

以下是MysqL代码及其输出

MysqL> CREATE TABLE dt (
    ->     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,->     col DATETIME NOT NULL
    -> ) AUTO_INCREMENT = 1;

MysqL> SET @@time_zone = 'SYstem';

MysqL> INSERT INTO dt (col) VALUES ('2020-01-01 10:10:10'),->     ('2020-01-01 10:10:10+05:30'),('2020-01-01 10:10:10-08:00');

MysqL> SET @@time_zone = '+00:00';

MysqL> INSERT INTO dt (col) VALUES ('2020-01-01 10:10:10'),('2020-01-01 10:10:10-08:00');

MysqL> SET @@time_zone = 'SYstem';

MysqL> SELECT @@system_time_zone;
+--------------------+
| @@system_time_zone |
+--------------------+
| EST                |
+--------------------+

MysqL> SELECT col,UNIX_TIMESTAMP(col) FROM dt ORDER BY id;
+---------------------+---------------------+
| col                 | UNIX_TIMESTAMP(col) |
+---------------------+---------------------+
| 2020-01-01 10:10:10 |          1577891410 |
| 2019-12-31 23:40:10 |          1577853610 |
| 2020-01-01 13:10:10 |          1577902210 |
| 2020-01-01 10:10:10 |          1577891410 |
| 2020-01-01 04:40:10 |          1577871610 |
| 2020-01-01 18:10:10 |          1577920210 |
+---------------------+---------------------+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。