【问题标题】:Setting a column as timestamp in MySql workbench?在 MySql 工作台中将列设置为时间戳?
【发布时间】:2015-08-16 23:09:14
【问题描述】:

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

我只是随机输入了TIMESTAMP(20),但是20 作为参数在这里意味着什么?这里应该放什么?

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

【问题讨论】:

标签: mysql sql timestamp mysql-workbench


【解决方案1】:

编辑

从 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 版本并且它被接受,它将被忽略。)

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    此语法似乎来自 MySQL 4.1 之前的旧版本。它已从 5.5 https://dev.mysql.com/doc/refman/5.0/en/upgrading-from-previous-series.html 中完全删除

    所以在这里指定宽度没有意义,因为它可能会被忽略。你运行的是什么版本?

    【讨论】:

      【解决方案4】:

      MySQL 5.7 似乎支持这种语法。传递的参数是精度。 TIMESTAMP(3) 将允许毫秒精度。 6 是允许的最高精度。

      参考:http://dev.mysql.com/doc/refman/5.7/en/datetime.html

      【讨论】:

        【解决方案5】:

        在 MySQL 工作台 8.0 中

        TIMESTAMP
        

        不起作用,你需要添加wole语句(如果你以后不想更新时间戳)

        TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
        

        比你有例如:

        2020-01-08 19:10:05

        但如果您希望 TIMESTAMP 可以通过记录更新进行修改而不是使用:

        TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-27
          • 1970-01-01
          相关资源
          最近更新 更多