mysql数据库中的这个查询有什么问题?
我试图通过运行下面的查询在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)
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列,它就会创建一个表。如果在语句中交换开始日期和结束日期呢。这将指出它是结束日期行还是第二个时间戳列。我很确定有两个非空时间戳列是个问题,但无法找到任何确定的内容。