使用偏移量将MySQL数据插入DATETIME字段

使用偏移量将MySQL数据插入DATETIME字段,mysql,datetime,timestamp,timezone-offset,timestamp-with-timezone,Mysql,Datetime,Timestamp,Timezone Offset,Timestamp With Timezone,关于,我对数据如何与insert语句中的偏移量(明确提到)一起存储到DATETIME字段有点困惑。 我到处都读到的是DATETIME字段按原样存储日期时间,它不受时区的影响。但是,我真的在绞尽脑汁去理解“DATETIME字段中存储的是什么数据。而且,在发送、存储到MySQL DATETIME字段以及从MySQL DATETIME字段接收数据的过程中,是否会发生任何时区转换” 注意:我知道时间戳字段是如何工作的。我还可以预测DATETIME字段的输出,当将数据插入此类字段时,不会显式附加时区偏移量

关于,我对数据如何与insert语句中的偏移量(明确提到)一起存储到DATETIME字段有点困惑。 我到处都读到的是DATETIME字段按原样存储日期时间,它不受时区的影响。但是,我真的在绞尽脑汁去理解“DATETIME字段中存储的是什么数据。而且,在发送、存储到MySQL DATETIME字段以及从MySQL DATETIME字段接收数据的过程中,是否会发生任何时区转换”

注意:我知道时间戳字段是如何工作的。我还可以预测DATETIME字段的输出,当将数据插入此类字段时,不会显式附加时区偏移量(如插入的第1行和第4行)

以下是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+05:30'), ('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 |
+---------------------+---------------------+