一尘不染

将NULL插入MySQL时间戳

sql

我在MySQL时间戳列中插入/更新NULL时观察到了意外的行为。

请考虑以下语句。

create table temp(id int, hireDate timestamp default 0);
insert into temp (id) values(1);
insert into temp (id, hireDate) values(2, null);
select * from temp;
id  hireDate
-----------------------------
1   
2   2012-09-19 10:54:10.0

第一次插入(如果hiredate未在SQL中指定null(0),则期望使用hiredDate 。

但是,当在SQL中传递显式null时,将插入当前日期时间,这是意外的。为什么会这样?

注意:Hibernate使用第二种插入类型,因此成为一个问题。如何在时间戳列中插入null?


阅读 131

收藏
2021-03-17

共1个答案

一尘不染

http://dev.mysql.com/doc/refman/5.0/en/timestamp-
initialization.html

此外,除非已使用NULL属性将其定义为允许NULL值,否则可以通过将其分配为NULL值来将任何TIMESTAMP列初始化或更新为当前日期和时间。

为了使TIMESTAMP可为空,请使用NULL属性创建它,或者更改表并添加NULL属性。在create语句中,它类似于。

CREATE TABLE t1 (tsvalue TIMESTAMP NULL, ... );

在设置了NULL属性的 TIMESTAMP 字段中插入 NULL 值将导致该字段设置为NULL而不是NOW()。 __

2021-03-17