1.建表
CREATE TABLE `TEST_2` (
`ID` int(3) NOT NULL,
`NAME` varchar(45) DEFAULT NULL,
`VERSION` varchar(255) DEFAULT NULL,
`CREATE_TIME` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.设置SQL_MODE
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE';
3.插入数据
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','0000-00-00');
年月日都是0 执行成功
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','2001-00-00');
月日都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','2001-01-00');
日都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','2001-00-01');
月都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','0000-10-00');
年日都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','0000-00-01');
年月都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('1','JACK','1.0','0000-01-01');
年是0 执行成功
4.设置SQL_MODE
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_DATE';
6.插入数据
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('2','JACK','1.0','0000-00-00');
年月日都是0 执行失败
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('2','JACK','1.0','1000-00-00');
月日都是0 执行成功
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('2','JACK','1.0','0000-01-00');
月日都是0 执行成功
insert into TEST.TEST_2(ID,NAME,VERSION,CREATE_TIME) VALUES ('2','JACK','1.0','0000-00-01');
月日都是0 执行成功
6.结论
NO_ZERO_IN_DATE 支持 0000-00-00 0000-01-01 (年月日都为0,月日不为0)
NO_ZERO_DATE 支持 1000-00-00 0000-01-00 0000-00-01(年月日中任何一个不为0)
要控制0000-00-00这样的数据插入必须两个都设置