编辑
从MysqL 5.6.4开始,数据类型在小数秒内TIMESTAMP(n)
指定n
(0到6)精度的十进制数字。
在MysqL 5.6之前,MysqL不支持将小数秒存储为TIMESTAMP
数据类型的一部分。
参考:https ://dev.mysql.com/doc/refman/5.6/en/fractional- seconds.html
我们不需要在上指定长度修饰符TIMESTAMP
。我们可以TIMESTAMP
自己指定。
但是请注意,TIMESTAMP
表中定义的第一列会自动进行初始化和更新。例如:
create table foo (id int, ts timestamp, val varchar(2));
show create table foo;
CREATE TABLE `foo` (
`id` INT(11) DEFAULT NULL,
`ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`val` VARCHAR(2) DEFAULT NULL
)
数据类型后面的含义取决于该数据类型,但是对于某些数据类型,它是一个长度修饰符。
对于某些数据类型,长度修饰符会影响可以存储的值的最大长度。例如,VARCHAR(20)
最多可以存储20个字符。并且DECIMAL(10,6)
允许使用小数点前四位数字和小数点后六位数字值,有效范围为-9999.999999至9999.999999。
对于其他类型,使用长度修饰符不会影响可以存储的值的范围。例如,INT(4)
和INT(10)
都是整数,并且两者都可以存储整数数据类型允许的所有值范围。
在这种情况下,长度修饰符所做的只是提供信息。它本质上指定了建议的显示宽度。客户可以利用它来确定行上要保留多少空间以显示列中的值。客户不必这样做,但是该信息可用。
编辑
TIMESTAMP
数据类型不再接受长度修饰符。(如果您运行的是旧版本的
MysqL,并且该版本已被接受,它将被忽略。)