1292: Incorrect datetime value: '' for column at row 1

26,796

Solution 1

In MySQL, '' (an empty string) is different from a null. If you want a null value, you should use an explicit null:

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

Solution 2

I managed to solve a similar problem using the commands:

mysql> set session sql_mode='';

and

mysql> set global sql_mode='';

in mysql prompt.

Solution 3

Try replacing the null values in Excel with 0000-00-00. I have not tried this with Excel, but it works for csv file. import

Share:
26,796
Mithun Raj
Author by

Mithun Raj

Updated on July 31, 2022

Comments

  • Mithun Raj
    Mithun Raj almost 2 years

    I am trying to load data from excel sheet to the below table on MYSQL 5.6 on windows 8.1 and I am getting 'Incorrect datetime value:' error.

    Term date column is of DATETIME data type and the data has null values in the excel sheet which I am trying to insert into the table.

    I did some research and found that the problem is with the SQL strict mode. But I am not able to figure out how to disable or modify the SQL strict mode.

    I in fact tried this SET SESSION sql_mode='ALLOW_INVALID_DATES' but no luck.

    Some said editing my.ini file in installation directory will help but I am not able to find it in the installation directory.

    can any one please help me resolve this issue.

    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));
    

    Error Message:

    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