1292:日期时间值不正确:''对于第1行的列'TERM_DATE'

时间:2015-02-15 19:30:43

标签: mysql sql datetime sql-insert strict-mode

我正在尝试将数据从excel表加载到Windows 8.1上的MYSQL 5.6上的下表中,我得到的日期时间值不正确:'错误。

期限日期列属于DATETIME数据类型,并且数据在excel表格中具有空值,我试图将其插入表格中。

我做了一些研究,发现问题出在SQL严格模式上。但我无法弄清楚如何禁用或修改SQL严格模式。

我实际上试过这个SET SESSION sql_mode='ALLOW_INVALID_DATES'但没有运气。

有人说在安装目录中编辑my.ini文件会有所帮助,但我无法在安装目录中找到它。

任何人都可以帮我解决这个问题。

create table EMPLOYEE(EMP_ID integer(10),
EMP_NAME char(25),
SALARY integer(25),
START_DATE datetime,
TERM_DATE datetime DEFAULT '1900-01-01',
PRIMARY KEY (EMP_ID));

错误讯息:

15:23:08    INSERT INTO `mith`.`EMPLOYEE` (`EMP_ID`, `EMP_NAME`, `SALARY`, `START_DATE`, `TERM_DATE`) VALUES ('26', 'Will Banker', '90000', '00:00.0', '')  1292: Incorrect datetime value: '' for column 'TERM_DATE' at row 1  

3 个答案:

答案 0 :(得分:5)

在MySQL中,''(空字符串)与null不同。如果您想要null值,则应使用明确的null

INSERT INTO `mith`.`EMPLOYEE` 
(`EMP_ID`, `EMP_NAME`, `SALARY`, `START_DATE`, `TERM_DATE`)
VALUES ('26', 'Will Banker', '90000', '00:00.0', null)

答案 1 :(得分:3)

我设法使用命令解决了类似的问题:

mysql> set session sql_mode='';

mysql> set global sql_mode='';
在mysql提示符中

答案 2 :(得分:2)

尝试使用0000-00-00替换Excel中的空值。我没有尝试使用Excel,但它适用于csv文件。进口