我在phpMyAdmin中将带有匹配统计信息的CSV文件导入我的数据库。其中一列保存了匹配日期和时间(称为Match_date_time),格式为
YYYY-MM-DD hh:mm:ss
这是作为varchar导入的,但当我尝试在phpMyAdmin中将其更改为日期时间长度/值为19时,我收到错误#1426 - Too big precision 19 specified for column 'Match_date_time'. Maximum is 6
当我将其设置为6时,它会显示为YYYY-MM-DD hh:mm:ss.000000
如何将此列更改为日期时间类型?
答案 0 :(得分:1)
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