这可能是一个非常基本的问题,但是我从未用过TIMESTAMP()
之前创建过的表,而且我对作为参数的内容感到困惑。例如,在这里:
我只是随机输入TIMESTAMP(20)
,但是20
作为参数在这里表示什么?这里应该放什么?
我用谷歌搜索了这个问题,但实际上并没有提出任何建议。。。无论如何,我是sql的新手,所以我们将不胜感激,谢谢!!
编辑
从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,并且该版本已被接受,它将被忽略。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句