我在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 。
hiredate
null(0)
但是,当在SQL中传递显式null时,将插入当前日期时间,这是意外的。为什么会这样?
注意:Hibernate使用第二种插入类型,因此成为一个问题。如何在时间戳列中插入null?
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()。 __