Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 ALTER TABLE命令在现有表中添加列,当前日期和时间:Not Working_Mysql_Sql_Date - Fatal编程技术网

Mysql ALTER TABLE命令在现有表中添加列,当前日期和时间:Not Working

Mysql ALTER TABLE命令在现有表中添加列,当前日期和时间:Not Working,mysql,sql,date,Mysql,Sql,Date,我有一个名为test的MySQL表。我需要再添加三列VERSIONdatatypebigint、CREATE\u TIMESTAMPdatatypeDate和LAST\u UPDATE\u TIMESTAMPdatatypeDate VERSION的默认值应为0,CREATE\u TIMESTAMP和LAST\u UPDATE\u TIMESTAMP的默认值应为当前日期时间 现在我正在做一些类似的事情: alter table MASTERDABASE.test添加列版本bigint(50)默认

我有一个名为test的MySQL表。我需要再添加三列
VERSION
datatypebigint、
CREATE\u TIMESTAMP
datatype
Date
LAST\u UPDATE\u TIMESTAMP
datatype
Date

VERSION
的默认值应为
0
CREATE\u TIMESTAMP
LAST\u UPDATE\u TIMESTAMP
的默认值应为当前日期时间

现在我正在做一些类似的事情:

alter table MASTERDABASE.test添加列版本bigint(50)默认值0;
alter table MASTERDABASE.test添加列CREATE_TIMESTAMP date default NOW();
alter table MASTERDABASE.test添加列LAST_UPDATE_TIMESTAMP date default NOW()

它将
VERSION
列添加到表中,在表的每行中使用默认值
0
。但无法创建数据类型
Date
的其他两列。 它显示MySQL日志中的错误:

alter table masterdatabase.test add column CREATE_TIMESTAMP date default NOW()|错误代码:1067。“创建时间戳”0.000秒的默认值无效

到底是什么阻止我创建那些我不理解的专栏

请建议是否有其他方法可以做到这一点

提前谢谢

试试这个

alter table masterdatabase.test add column CREATE_TIMESTAMP datetime default NOW() ;
您需要在DATETIME中存储日期值,因为NOW()将以2008-11-11 12:45:34的格式向您返回日期和时间,DATETIME可以存储此值以了解更多详细信息请参见

alter table masterdatabase.test add column CREATE_TIMESTAMP datetime default NOW() ;

您需要在DATETIME中存储日期值,因为NOW()将以2008-11-11 12:45:34的格式向您返回日期和时间,DATETIME可以存储此值以了解更多详细信息,请参见使用当前时间戳而不是现在()

ALTER TABLE masterdatabase.test add column CREATE_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

使用当前\u时间戳来代替现在()

ALTER TABLE masterdatabase.test add column CREATE_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

您只需将数据类型DATE更改为DATETIME,这样它就可以正常工作,否则,如果您想将数据类型改为DATE,那么只需更改最后两列的alter查询即可

alter table masterdatabase.test add column CREATE_TIMESTAMP date default curdate(); 
alter table masterdatabase.test add column LAST_UPDATE_TIMESTAMP date default curdate();

您只需将数据类型DATE更改为DATETIME,这样它就可以正常工作,否则,如果您想将数据类型改为DATE,那么只需更改最后两列的alter查询即可

alter table masterdatabase.test add column CREATE_TIMESTAMP date default curdate(); 
alter table masterdatabase.test add column LAST_UPDATE_TIMESTAMP date default curdate();

数据类型规范中的DEFAULT value子句指示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数(如NOW()或CURRENT_date)的值。例外情况是,您可以将当前_TIMESTAMP指定为TIMESTAMP和DATETIME列的默认值

试试这个:

alter table test add column CREATE_TIMESTAMP TIMESTAMP默认当前_时间戳


希望这会有所帮助。

数据类型规范中的DEFAULT value子句表示列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为函数(如NOW()或CURRENT_date)的值。例外情况是,您可以将当前_TIMESTAMP指定为TIMESTAMP和DATETIME列的默认值

试试这个:

alter table test add column CREATE_TIMESTAMP TIMESTAMP默认当前_时间戳


希望这会有所帮助。

将数据类型更改为时间戳,它应该可以工作。将数据类型更改为时间戳,它应该可以工作。我尝试了这个。工作正常:
altertablemasterdatabase.testaddcolumn CREATE\u TIMESTAMP TIMESTAMP notnull默认当前\u TIMESTAMP
但当我试图为
LAST\u UPDATE\u TIMESTAMP
添加另一列时,它说应该只有一个列类型TIMESTAMP.:(@NDeveloper我很乐意帮助您。谢谢您的评论。@NDeveloper用datetime更改时间戳,因为您只能有一列带有时间戳。Heart:它显示:
12:42:34 ALTER TABLE MASTERDABASE.test add column LAST\u UPDATE\u TIMESTAMP TIMESTAMP NOT NULL默认值当前时间戳错误代码:1293。表定义不正确;可能存在错误。)只有一个时间戳列具有默认的当前时间戳或更新子句0.000秒
Hi..我尝试了这个。它成功了:
ALTER TABLE masterdatabase.test add column CREATE_TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
但当我试图为
上次更新时间戳
添加另一列时,它说应该有只有一个列类型时间戳..:(@NDeveloper我很乐意帮助您。谢谢您的评论。@NDeveloper用datetime更改时间戳,因为您只能有一列带有时间戳。Heart:它显示:
12:42:34 ALTER TABLE MASTERDABASE.test add column LAST\u UPDATE\u TIMESTAMP TIMESTAMP NOT NULL默认值当前时间戳错误代码:1293。表定义不正确;可能存在错误。)只有一个时间戳列具有默认的当前时间戳,或者在UPDATE子句0.000秒时有意义。。但是不能有两列具有时间戳。这怎么可能实现?我实际上想更改表,添加两列具有数据类型日期和默认值日期的列。:(这是有道理的..但是不能有两列带有时间戳。这怎么可能呢?我实际上想修改表,添加两列带有数据类型日期和默认值日期的列。:(