5

データベースにテーブルを作成しました:

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

いくつかの値を挿入しました:

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

このエラーが発生しています:

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

私はすでに YYYY-MM-DD 形式に従っていたので、かなり困惑しています。何か助けはありますか?

4

3 に答える 3

11

Date and Time Literals に記載されているとおり:

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形式の数値として。たとえば、19830905830905は として解釈され'1983-09-05'ます。

したがって、式2013-05-21は有効な MySQL 日付リテラルではありません (実際には、2 つの減算で構成される算術式であり、結果は integer になります1987)。上記のリテラル形式のいずれかに準拠するには、日付リテラルを文字列として引用するか、区切り記号を削除する必要があります。

于 2013-07-22T18:04:19.393 に答える
2

日付リテラルを引用符で囲む必要があります。エラーメッセージは1987、引用符で囲まれていない日付が式として読み取られているため2013 minus 5 minus 211987.

日付は次のようにすることができます:'2013-05-21'または、ドキュメント'20130521'で説明されている他のいくつかの形式。

于 2013-07-22T17:56:48.750 に答える