使用偏移量将MySQL数据插入DATETIME字段
关于,我对数据如何与insert语句中的偏移量(明确提到)一起存储到DATETIME字段有点困惑。 我到处都读到的是DATETIME字段按原样存储日期时间,它不受时区的影响。但是,我真的在绞尽脑汁去理解“DATETIME字段中存储的是什么数据。而且,在发送、存储到MySQL DATETIME字段以及从MySQL DATETIME字段接收数据的过程中,是否会发生任何时区转换” 注意:我知道时间戳字段是如何工作的。我还可以预测DATETIME字段的输出,当将数据插入此类字段时,不会显式附加时区偏移量(如插入的第1行和第4行) 以下是MySQL代码及其输出:使用偏移量将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字段的输出,当将数据插入此类字段时,不会显式附加时区偏移量
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 |
+---------------------+---------------------+