在MySql工作台中将列设置为时间戳?

oce*_*800 17 mysql sql timestamp mysql-workbench

这可能是一个非常基本的问题,但我以前从未创建过一个表格TIMESTAMP(),而且我对作为参数的内容感到困惑.例如,这里:

在此输入图像描述

我只是随意放TIMESTAMP(20),但20作为参数在这里表示什么?这里应该放什么?

我用谷歌搜索了这个问题,但是并没有真正想出任何东西......无论如何我是sql的新手,所以任何帮助都会非常感激,谢谢!

spe*_*593 11

编辑

从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


我们不需要在a上指定长度修改器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
) 
Run Code Online (Sandbox Code Playgroud)

数据类型后面的parens取决于数据类型是什么,但对于某些数据类型,它是一个长度修饰符.

对于某些数据类型,长度修饰符会影响可以存储的值的最大长度.例如,VARCHAR(20)最多允许存储20个字符.并DECIMAL(10,6)允许小数点前四位数和后六位数的数值,有效范围为-9999.999999至9999.999999.

对于其他类型,长度修饰符不会影响可以存储的值的范围.例如,INT(4)并且INT(10)都是整数,并且两者都可以存储允许整数数据类型的整个值范围.

在这种情况下,长度修饰符的作用仅仅是信息性的.它基本上指定了推荐的显示宽度.客户端可以利用它来确定在一行上保留多少空间以显示列中的值.客户端不必这样做,但该信息可用.

编辑

TIMESTAMP数据类型不再接受长度修饰符.(如果你运行的是一个非常老的MySQL版本并且已被接受,它将被忽略.)

  • 这里可能值得一提:从5.6.4开始存在分数次第二支持:http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html (3认同)

Die*_*eto 8

这是我朋友的精确度,如果你把例子(2)作为参数,你会得到一个精度如下的日期:2015-12-29 00:00:00.00,顺便说一下最大值是6.