我在 phpMyAdmin 中将包含匹配统计信息的 CSV 文件导入到我的数据库中。这些列之一包含匹配日期和时间(称为 Match_date_time),格式为
YYYY-MM-DD hh:mm:ss
这是作为 varchar 导入的,但是当我尝试在 phpMyAdmin 中将其更改为长度/值为 19 的 datetime 时,我收到错误 #1426 - 为“Match_date_time”列指定的精度 19 太大。最大值为 6
当我将它设置为 6 时,它显示为 YYYY-MM-DD hh:mm:ss.000000
如何将此列更改为日期时间类型?
最佳答案
MySQL中日期时间类型的精度不是格式化日期的总长度。这是存储的微秒精度。 DATETIME(6)
表示存储YYYY-MM-DD hh:mm:ss.000000
。 DATETIME(0)
表示不存储微秒,YYYY-MM-DD hh:mm:ss
。
参见 Fractional Seconds in Time Values .
一般来说,几乎不需要像 VARCHAR(100)
这样设置列限制。它们是消除不必要的硬编码数据限制的好方法。大多数列类型都是可变大小的,因此您不会节省任何空间。使用默认值并更喜欢无限的、可变大小的类型,例如 TEXT
而不是 VARCHAR
。
但是如果你关心存储微秒,你应该指定它,因为MySQL(惊奇,惊奇)违反了标准。 MySQL 中的默认值为 0。SQL 标准中的默认值为 6。如果您不关心微秒,请保留它。无论哪种方式,每列都是几个字节。
如果 varchar 列中的数据已经是 ISO 8601 格式,并且听起来确实如此,您可以将该列更改为 datetime。
alter table sometable
modify thatcolumn datetime
关于mysql - varchar 到日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970317/