【问题标题】:MySQL - default value for TIMESTAMP(3)MySQL - TIMESTAMP(3) 的默认值
【发布时间】:2014-07-03 11:40:40
【问题描述】:

我的数据库是 MySql 5.6。

我想使用 CURRENT_TIMESTAMP 作为 TIMESTAMP(3) 类型的属性的默认值。

但我得到了错误:

错误 1067 (42000):“更新”的默认值无效

我认为这是因为CURRENT_TIMESTAMP 的精度仅为秒。

如何将当前时间设置为带有小数部分的timestamp 的默认值?

【问题讨论】:

  • 首先尝试在 TIMESTAMP(3) 中不包含 3。还要确保表中只有一个使用 CURRENT_TIMESTAMP 的字段。

标签: mysql


【解决方案1】:

根据timestampdatetime 类型列的文档:

如果 TIMESTAMPDATETIME 列定义在任何地方都包含明确的小数秒精度值,则必须在整个列定义中使用相同的值。

这是允许的:

CREATE TABLE t1 (
  ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)
);

其他示例

mysql> create table tbl_so_q23671222_1( ts timestamp(3) default now() );
ERROR 1067 (42000): Invalid default value for 'ts'

mysql> create table tbl_so_q23671222_1( ts timestamp(3) default now(3) );
Query OK, 0 rows affected (0.59 sec)

mysql> create table tbl_so_q23671222_2( ts timestamp(3) default current_timestamp );
ERROR 1067 (42000): Invalid default value for 'ts'

mysql> create table tbl_so_q23671222_2( ts timestamp(3) default current_timestamp(3) );
Query OK, 0 rows affected (0.38 sec)

mysql> desc tbl_so_q23671222_1;
+-------+--------------+------+-----+----------------------+-------+
| Field | Type         | Null | Key | Default              | Extra |
+-------+--------------+------+-----+----------------------+-------+
| ts    | timestamp(3) | NO   |     | CURRENT_TIMESTAMP(3) |       |
+-------+--------------+------+-----+----------------------+-------+
1 row in set (0.01 sec)

mysql> desc tbl_so_q23671222_2;
+-------+--------------+------+-----+----------------------+-------+
| Field | Type         | Null | Key | Default              | Extra |
+-------+--------------+------+-----+----------------------+-------+
| ts    | timestamp(3) | NO   |     | CURRENT_TIMESTAMP(3) |       |
+-------+--------------+------+-----+----------------------+-------+
1 row in set (0.01 sec)

参考
Initialization and Updating for TIMESTAMP and DATETIME

【讨论】:

    猜你喜欢
    • 2015-05-02
    • 2020-12-01
    • 1970-01-01
    • 2013-12-29
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2012-04-01
    相关资源
    最近更新 更多