2013-07-22 10 views
5

मैं एक मेज मेरी डेटाबेस में बनाया: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', 'INST') NOT NULL, 
    PRIMARY KEY (student_no, academic_year, trimester, or_no) 
); 

मैं कुछ मान डाला:

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

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

मैं इस त्रुटि हो रही है

मैं काफी स्टंप हूं क्योंकि मैंने पहले से ही YYYY-MM-DD प्रारूप का पालन किया है। कोई मदद?

उत्तर

7

Date and Time Literals के तहत दस्तावेज के रूप में:

MySQL recognizes DATE 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 '[email protected]@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 तारीख शाब्दिक नहीं है (यह एक अंकगणितीय अभिव्यक्ति वास्तव में दो subtractions से मिलकर: यह पूर्णांक 1987 में परिणाम है)। ऊपर वर्णित शाब्दिक प्रारूपों में से एक का अनुपालन करने के लिए, आपको या तो अपनी तिथि शाब्दिक को स्ट्रिंग के रूप में उद्धृत करना होगा और/या डिलीमीटर को हटा देना होगा।

+0

आपको बहुत बहुत धन्यवाद। –

+0

यह शायद ही स्पष्ट है कि आप यहां गायब उद्धरणों के बारे में बात कर रहे हैं। – ebyrob

+0

@ebyrob: ऐसा इसलिए है क्योंकि मैं नहीं हूं। तिथियों के लिए एक पूरी तरह से वैध शाब्दिक प्रारूप है, जिसमें उद्धरण की आवश्यकता नहीं होती है: इस मामले में केवल एक को डिलीमीटर को हटाने की आवश्यकता होती है। – eggyal

4

आप अपने परीक्षण के लिए issue_date मूल्यों के आसपास ' एकल उद्धरण के साथ याद कर रहे हैं यह रिकॉर्ड सम्मिलित करता है सफलतापूर्वक

इस

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

Here is your fiddle

+0

बहुत बहुत धन्यवाद। वह वेब ऐप भी बहुत उपयोगी है। –

2

आप तारीख उद्धरण में शाब्दिक लगाने की जरूरत है की कोशिश करो । त्रुटि संदेश 1987 कहता है क्योंकि अनजान दिनांक 2013 minus 5 minus 21 अभिव्यक्ति के रूप में पढ़ा जा रहा है, जो 1987 है।

आपकी तिथियां इस तरह हो सकती हैं: '2013-05-21' या '20130521' या documentation में शामिल कुछ अन्य प्रारूप।

+0

बहुत बहुत धन्यवाद। –

संबंधित मुद्दे