-
MySQL 的
DATETIME类型基本特性- 在 MySQL 中,
DATETIME类型用于存储日期和时间,格式为YYYY - MM - DD HH:MM:SS。它的存储范围是从1000 - 01 - 01 00:00:00到9999 - 12 - 31 23:59:59。从这个基本定义可以看出,标准的DATETIME类型是不直接支持毫秒的。
- 在 MySQL 中,
-
DATETIME类型的扩展精度支持(MySQL 5.6.4 及以上)-
从 MySQL 5.6.4 版本开始,
DATETIME类型可以支持更高的精度,包括毫秒。通过在创建表或者修改表结构时指定精度,可以让DATETIME类型存储包含毫秒的值。 -
例如,在创建表时可以这样指定:
-
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
datetime_column DATETIME(3)
);
在这个示例中,DATETIME(3)表示DATETIME类型的精度为 3,也就是可以存储毫秒部分(精度可以指定为 0 - 6,其中 0 表示没有小数部分,也就是传统的DATETIME格式,1 - 6 表示可以存储 1 - 6 位小数部分,用于存储毫秒、微秒等更精确的时间)。
-
当插入数据时,可以插入包含毫秒的值,例如:
INSERT INTO test_table (datetime_column) VALUES ('2024 - 01 - 01 12:00:00.123');
这条 SQL 语句插入了一个包含毫秒部分(123毫秒)的日期时间值。
-
在程序中的处理(以 Go 语言和 GORM 为例)
-
当使用 Go 语言和 GORM 与 MySQL 进行交互,并且数据库中的
DATETIME字段支持毫秒精度时,在定义 Go 结构体对应的字段类型可以使用time.Time。 -
例如:
-
type TestTable struct {
ID int
DatetimeColumn time.Time
}
在这个结构体定义中,DatetimeColumn字段类型为time.Time,它可以正确地处理从 MySQL 数据库中读取出来的包含毫秒精度的日期时间值。在插入数据时,time.Time类型的变量也可以包含毫秒精度,GORM 会自动将其转换为符合数据库要求的格式进行插入。