将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 (将#修改为@)