将MySQL中的TIMESTAMP默认值设置为NULL,而不是CURRENT_TIMESTAMP。

45
使用MySQL,我正在尝试从日期列和时间列创建一个时间戳列。如果日期或时间列包含NULL值,MySQL会自动将相应的值设置为 TIMESTAMP 列中的 CURRENT_TIMESTAMP

是否有一种方法可以将其默认设置为NULL,而不是CURRENT_TIMESTAMP

类似这样:

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

97

使用此查询添加您的列

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;

2
这对我有用。我创建了表,同时直接将我的时间戳列设置为 NULL DEFAULT NULL,它起作用了! - Suresh
之前我尝试将时间戳列创建为 COLUMN_NAME DEFAULT NULL ,但这根本不起作用。 - Suresh

0
补充已接受的答案,以防有人想要修改一个已经默认为当前时间戳的现有列。
alter table `customers` modify `s_timestamp` timestamp null

该列现在不再默认为当前时间戳。

-1

我认为这应该可以工作:

ALTER TABLE customers ADD COLUMN s_timestamp TIMESTAMP DEFAULT NULL;

4
如果要设置空标记,TIMESTAMP列有特殊的自动行为,当插入NULL时不会生效。因此,如果您真的想设置空标记,必须明确将该列设置为可空。 - Michael - sqlbot
已经注意到了,但问题是关于MySQL的行为。 - Michael - sqlbot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接