varchar到datetime

时间:2017-02-01 01:11:52

标签: mysql sql datetime phpmyadmin

我在phpMyAdmin中将带有匹配统计信息的CSV文件导入我的数据库。其中一列保存了匹配日期和时间(称为Match_date_time),格式为 YYYY-MM-DD hh:mm:ss

这是作为varchar导入的,但当我尝试在phpMyAdmin中将其更改为日期时间长度/值为1​​9时,我收到错误#1426 - Too big precision 19 specified for column 'Match_date_time'. Maximum is 6

当我将其设置为6时,它会显示为YYYY-MM-DD hh:mm:ss.000000

如何将此列更改为日期时间类型?

1 个答案:

答案 0 :(得分:1)

MySQL中日期和时间类型的精度不是格式化日期的总长度。存储的微秒精度。 DATETIME(6)表示存储YYYY-MM-DD hh:mm:ss.000000DATETIME(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