mysql数据库中的这个查询有什么问题?

mysql数据库中的这个查询有什么问题?,mysql,sql,database,Mysql,Sql,Database,我试图通过运行下面的查询在mysql数据库中创建一个表 CREATE TABLE vms_schedule( schedule_id Int AUTO_INCREMENT , name varchar(255) NOT NULL , start_date timestamp NOT NULL , end_date timestamp NOT NULL , sun Numeric(10, 0) , mon Numeric(10, 0)

我试图通过运行下面的查询在mysql数据库中创建一个表

CREATE TABLE vms_schedule(
   schedule_id Int AUTO_INCREMENT
   ,   name varchar(255) NOT NULL
   ,   start_date timestamp NOT NULL
   ,   end_date timestamp NOT NULL
   ,   sun Numeric(10, 0) 
   ,   mon Numeric(10, 0) 
   ,   tue Numeric(10, 0) 
   ,   wed Numeric(10, 0) 
   ,   thu Numeric(10, 0) 
   ,   fri Numeric(10, 0) 
   ,   sat Numeric(10, 0) 
   ,PRIMARY KEY (schedule_id)
);
但我得到“结束日期的默认值无效”错误。不确定查询有什么问题,因为它适用于开始日期而不是结束日期

编辑:


谢谢。

我无法在MySQL 5.6.23上重现此问题。我没有MySQL 5.7。5.7是一个开发版本。您可能不应该将其用于生产。你可能碰到了一个错误,你应该这样做


我会避免使用时间戳,而是使用。并且仅限于1970年至2038年之间的日期。使用DATETIME和显式声明任何希望发生的魔法更简单、更可靠。

在这里可以使用,如果你说一列不是空的,你应该提供一个默认值。@dan08不一定。另外,当您创建table@dan08,但它适用于开始日期。我的意思是,如果我删除end_date列,它就会创建一个表。如果在语句中交换开始日期和结束日期呢。这将指出它是结束日期行还是第二个时间戳列。我很确定有两个非空时间戳列是个问题,但无法找到任何确定的内容。