【问题标题】:MySQL 5 default null for date, cannot insert date = '' why?MySQL 5 默认为 null 日期,不能插入 date = '' 为什么?
【发布时间】:2017-09-19 06:53:01
【问题描述】:

我创建了下表,我将日期设置为 DEFAULT NULL。但是当我尝试在表中插入一个空字符串时。我会得到一个错误。将空字段插入日期的最佳方法是什么?

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'

如何处理日期的空字段。例如,如果用户不输入并在表单中为日期留下一个空字段。最好的方法是什么?

【问题讨论】:

    标签: mysql date asp-classic


    【解决方案1】:

    问题是,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')
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2018-11-17
      相关资源
      最近更新 更多