当前位置: 首页 > 面试题库 >

MySQL-TIMESTAMP(3)的默认值

路金鑫
2023-03-14
问题内容

我的数据库是MySql 5.6。

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

但是我得到了错误:

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

我认为是因为CURRENT_TIMESTAMP仅以秒为单位。

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


问题答案:

根据文档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)

请参阅
TIMESTAMP和DATETIME的初始化和更新



 类似资料:
  • 错误1067(42000):“updated”的默认值无效 我想这是因为的精度只有秒。 如何将当前时间设置为具有小数部分的的默认值?

  • 主要内容:在创建表时设置默认值约束,在修改表时添加默认值约束,删除默认值约束默认值(Default)的完整称呼是“默认值约束(Default Constraint)”,用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。 例如,员工信息表中,部门位置在北京的较多,那么部门位置就可以默认为“北京”,系统就会自动为这个字段赋值为“北京”。 默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。 在

  • 我已经研究过这个问题:Spring3:注入默认Bean,除非存在另一个Bean,如果您知道所有Bean的名称,Java配置中显示的解决方案将很好地工作,但在我的情况下,我不知道Bean被称为什么。 有人知道有什么办法可以做到这一点吗?

  • 删除函数的函数可以不进行实现,默认函数就则不同:编译器会创建函数实现,通常都是“默认”实现。当然,这些函数可以直接使用(它们都会自动生成):默认构造函数,析构函数,拷贝构造函数,移动构造函数,拷贝赋值操作符和移动赋值操作符。 为什么要这样做呢?这里列出一些原因: 改变函数的可访问性——编译器生成的默认函数通常都是声明为public(如果想让其为protected或private成员,必须自己实现)

  • 问题内容: 因此,我在过去的一个小时里一直在互联网上浏览,阅读并寻找这个简单问题的明确答案。 MySQL中的默认JOIN是什么? 一样吗 还有一个相关的问题,当您使用“ WHERE”子句时,它与JOIN或INNER JOIN相同吗? 现在,我认为独立的JOIN与使用逗号和WHERE子句相同。 问题答案: 在MySQL中,写不合格的隐含含义。换句话说,in 是可选的。而在MySQL的同义词。为了清楚

  • 我正在学习一个在线课程,包括创建一个Wordpress插件。当我尝试按照说明(并使用提供的代码排除我这边的任何错误)创建自定义表时,出现了一个问题。这是原始代码的一部分: MySQL(意大利语)的本地设置可能会产生任何问题吗?MySQL版本为::5.7.21-0Ubuntu0.16.04.1-(Ubuntu)。PHP版本7.0.22。Wordpress版本:4.9.2。谢谢你。