SQL DML:日期值不正确(MySQL)

前端之家收集整理的这篇文章主要介绍了SQL DML:日期值不正确(MySQL)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在我的数据库中创建了一个表:

CREATE TABLE official_receipt(
    student_no INT UNSIGNED,academic_year CHAR(8),trimester ENUM('1','2','3'),or_no MEDIUMINT UNSIGNED,issue_date DATE NOT NULL,received_from VARCHAR(255) NOT NULL,amount_of DECIMAL(8,2) NOT NULL,issued_by VARCHAR(255),doc_type ENUM('FULL','DOWN','INST') NOT NULL,form_of_payment ENUM('CASH',PRIMARY KEY (student_no,academic_year,trimester,or_no)
);

我插入了一些值:

INSERT INTO official_receipt(student_no,or_no,issue_date,received_from,amount_of,issued_by,doc_type,form_of_payment)
VALUES
    (201201121,'AY201314','1',029940,2013-05-21,'NAME',20000.00,NULL,'INST'),(201201121,029944,2013-07-23,8000.00,'INST',(201201101,029941,56650.00,'FULL','CASH'),(201201037,029942,(201201142,029943,63800.00,'CASH');

我收到此错误

Error Code: 1292. Incorrect date value: '1987' for column 'issue_date' at row 1

我很难过,因为我已经遵循了YYYY-MM-DD格式.有帮助吗?

最佳答案
Date and Time Literals所述:

MysqL recognizes 07001 values in these formats:

  • As a string in either 'YYYY-MM-DD' or 'YY-MM-DD' format. A “relaxed” Syntax is permitted: Any punctuation character may be used as the delimiter between date parts. For example,'2012-12-31','2012/12/31','2012^12^31',and '2012@12@31' are equivalent.

  • As a string with no delimiters in either 'YYYYMMDD' or 'YYMMDD' format,provided that the string makes sense as a date. For example,'20070523' and '070523' are interpreted as '2007-05-23',but '071332' is illegal (it has nonsensical month and day parts) and becomes '0000-00-00'.

  • As a number in either YYYYMMDD or YYMMDD format,provided that the number makes sense as a date. For example,19830905 and 830905 are interpreted as '1983-09-05'.

因此,表达式2013-05-21不是有效的MysqL日期文字(它实际上是一个算术表达式,由两个减法组成:它产生整数1987).为了符合上面详述的文字格式之一,您必须将日期文字引用为字符串和/或删除分隔符.

猜你在找的MySQL相关文章