MySQL 5 日期默认为空,无法插入日期 = '' 为什么?
MySQL 5 default null for date, cannot insert date = '' why?
我创建了以下 table,我将日期设置为 DEFAULT NULL。但是当我尝试将空字符串插入 table 时。我会得到一个错误。处理空字段以插入日期的最佳方法是什么?
CREATE TABLE `testing` (
`AUTOINC` double NOT NULL AUTO_INCREMENT,
`TST` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
`EMP_CODE` varchar(10) NOT NULL DEFAULT '',
`DT_JOIN` date DEFAULT NULL,
`DT_CONFIRM` date DEFAULT NULL,
`DT_RESIGN` date DEFAULT NULL,
`USER_ID` varchar(6) NOT NULL DEFAULT '',
`DATETIME` datetime DEFAULT NULL,
PRIMARY KEY (`AUTOINC`)
) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=utf8;
insert into TMEMPLY (EMP_CODE,DT_JOIN,DT_CONFIRM,DT_RESIGN,USER_ID,DATETIME)
values ('TEST','2017-09-19','','','BRO','2017-09-19 14:47:21')
错误
Incorrect date value: '' for column 'DT_CONFIRM'
如何处理日期的空字段。例如,如果用户不输入并在表单中为日期留空字段。什么是最好的方法?
问题是,datetime
列接受有效日期或 null
值。因此,不要传递 ''
(空白),而是传递 null
,因为您已经知道 ''
不等于 null
。所以查询是这样的:
insert into TMEMPLY (EMP_CODE,DT_JOIN,DT_CONFIRM,DT_RESIGN,USER_ID,DATETIME)
values ('TEST','2017-09-19', null, null,'BRO','2017-09-19 14:47:21')
我创建了以下 table,我将日期设置为 DEFAULT NULL。但是当我尝试将空字符串插入 table 时。我会得到一个错误。处理空字段以插入日期的最佳方法是什么?
CREATE TABLE `testing` (
`AUTOINC` double NOT NULL AUTO_INCREMENT,
`TST` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
`EMP_CODE` varchar(10) NOT NULL DEFAULT '',
`DT_JOIN` date DEFAULT NULL,
`DT_CONFIRM` date DEFAULT NULL,
`DT_RESIGN` date DEFAULT NULL,
`USER_ID` varchar(6) NOT NULL DEFAULT '',
`DATETIME` datetime DEFAULT NULL,
PRIMARY KEY (`AUTOINC`)
) ENGINE=MyISAM AUTO_INCREMENT=126 DEFAULT CHARSET=utf8;
insert into TMEMPLY (EMP_CODE,DT_JOIN,DT_CONFIRM,DT_RESIGN,USER_ID,DATETIME)
values ('TEST','2017-09-19','','','BRO','2017-09-19 14:47:21')
错误
Incorrect date value: '' for column 'DT_CONFIRM'
如何处理日期的空字段。例如,如果用户不输入并在表单中为日期留空字段。什么是最好的方法?
问题是,datetime
列接受有效日期或 null
值。因此,不要传递 ''
(空白),而是传递 null
,因为您已经知道 ''
不等于 null
。所以查询是这样的:
insert into TMEMPLY (EMP_CODE,DT_JOIN,DT_CONFIRM,DT_RESIGN,USER_ID,DATETIME)
values ('TEST','2017-09-19', null, null,'BRO','2017-09-19 14:47:21')