Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL时间戳默认为空,而不是当前的时间戳_Mysql_Sql_Timestamp - Fatal编程技术网

MySQL时间戳默认为空,而不是当前的时间戳

MySQL时间戳默认为空,而不是当前的时间戳,mysql,sql,timestamp,Mysql,Sql,Timestamp,使用MySQL,我试图从日期列和时间列创建一个时间戳列。如果日期或时间列包含空值,MySQL会自动将TIMESTAMP列中的相应值设置为空值 是否有办法将其默认为NULL,而不是当前时间戳 比如: ALTER TABLE customers ADD s_timestamp TIMESTAMP; UPDATE customers SET s_timestamp = timestamp(s_date,s_time) DEFAULT NULL; 我想这应该行得通: ALTER TABLE c

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

是否有办法将其默认为
NULL
,而不是
当前时间戳

比如:

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

我想这应该行得通:

ALTER TABLE customers ADD COLUMN s_timestamp TIMESTAMP DEFAULT NULL;

使用此查询添加列

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;

没有
TIMESTAMP
列在插入
NULL
时具有空标记,因此如果您真的希望能够设置空标记,则必须显式地使该列可为空。请注意,问题是关于MySQL行为的。这对我很有效。我创建了这个表,在创建的过程中,我直接给了我的timestamp列
NULL DEFAULT NULL
,它成功了!早些时候,我试图将timestamp列创建为
column\u NAME DEFAULT NULL
,但这根本不起作用。