2013-12-11 47 views
9

使用mysql,我试图从日期列和时间列中创建时间戳列。如果日期或时间列包含NULL值,则mysql会自动将timestamp列中的对应值设置为current_timestamp。有没有办法让它默认为NULL,而不是当前的时间戳?MySQL的时间戳为默认为空,而不是current_timestamp

喜欢的东西:

ALTER TABLE customers ADD s_timestamp TIMESTAMP; 
UPDATE customers 
SET s_timestamp = timestamp(s_date,s_time) DEFAULT NULL; 

回答

23

使用该查询并增加你的专栏

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL; 

而且,如果你想获得当前的时间戳仅限更新:

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP; 
-1

我想这应该工作:

ALTER TABLE customers ADD COLUMN s_timestamp TIMESTAMP DEFAULT NULL; 
+1

它没有。当'NULL'被插入时,'TIMESTAMP'列有[特殊的自动行为](http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html),所以如果你真的想要能够要设置一个空标记,您必须明确地使列可为空。 –

+0

用postgres进行测试 - 它的工作 – niyou

+0

正式指出,但问题是关于MySQL的行为。 –

相关问题