5 mysql date-format dml insert-into
我在我的数据库中创建了一个表:
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', 'INST') NOT NULL,
PRIMARY KEY (student_no, academic_year, trimester, or_no)
);
Run Code Online (Sandbox Code Playgroud)
我插入了一些值:
INSERT INTO official_receipt(student_no , academic_year, trimester, 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, 'DOWN', 'INST'),
(201201121, 'AY201314', '1', 029944, 2013-07-23, 'NAME', 8000.00, NULL, 'INST', 'INST'),
(201201101, 'AY201314', '1', 029941, 2013-05-21, 'NAME', 56650.00, NULL, 'FULL', 'CASH'),
(201201037, 'AY201314', '1', 029942, 2013-05-21, 'NAME', 56650.00, NULL, 'FULL', 'CASH'),
(201201142, 'AY201314', '1', 029943, 2013-05-21, 'NAME', 63800.00, NULL, 'FULL', 'CASH');
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error Code: 1292. Incorrect date value: '1987' for column 'issue_date' at row 1
Run Code Online (Sandbox Code Playgroud)
我很难过,因为我已经遵循了YYYY-MM-DD格式.有帮助吗?
egg*_*yal 10
MySQL
DATE以这些格式识别值:
作为字母
'YYYY-MM-DD'或'YY-MM-DD'格式的字符串.允许使用"宽松"语法:任何标点符号都可以用作日期部分之间的分隔符.例如,'2012-12-31','2012/12/31','2012^12^31',和'2012@12@31'是相等的.作为字符串中没有分隔符
'YYYYMMDD'或'YYMMDD'格式的字符串,前提是该字符串作为日期有意义.例如,'20070523'并且'070523'被解释为'2007-05-23',但是'071332'非法(它具有无意义的月和日部分)并且变为'0000-00-00'.作为数字
YYYYMMDD或YYMMDD格式的数字,只要该数字作为日期有意义.例如,19830905并被830905解释为'1983-09-05'.
因此,表达式2013-05-21不是有效的MySQL日期文字(它实际上是一个算术表达式,由两个减法组成:它产生整数1987).为了符合上面详述的文字格式之一,您必须将日期文字引用为字符串和/或删除分隔符.
| 归档时间: |
|
| 查看次数: |
24554 次 |
| 最近记录: |