गलत डेटाटाइम वैल्यू एरर से बचने के लिए, आप STR_TO_DATE() मेथड का उपयोग कर सकते हैं।
जैसा कि हम जानते हैं, डेटाटाइम फॉर्मेट YYYY-MM-DD होता है और यदि आप इसी फॉर्मेट में इन्सर्ट नहीं करेंगे, तो एरर उत्पन्न होगी।
आइए देखते हैं कि वास्तव में इस एरर का कारण क्या है। इसके लिए, आइए एक नई टेबल बनाते हैं। टेबल बनाने की क्वेरी निम्नलिखित है:
mysql> create table CorrectDatetimeDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ArrivalTime DATETIME
-> ); Query OK, 0 rows affected (0.63 sec)
गलत डेटाटाइम फॉर्मेट वाली डेट को शामिल करने का प्रयास करने पर एरर होती है:
mysql> INSERT INTO CorrectDatetimeDemo(ArrivalTime) VALUES('18/02/2019 11:15:45');
ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 1
उपरोक्त एरर से बचने के लिए, आप STR_TO_DATE() का उपयोग कर सकते हैं।
सिंटैक्स निम्नलिखित है:
INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue', '%d/%m/%Y %H:%i:%s'));
अब, उपरोक्त सिंटैक्स में दिखाए गए सही फॉर्मेट के साथ फिर से डेटाटाइम इन्सर्ट करें।
क्वेरी निम्नलिखित है:
mysql> INSERT INTO CorrectDatetimeDemo(ArrivalTime) VALUES(STR_TO_DATE('18/02/2019 11:15:45', '%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO CorrectDatetimeDemo(ArrivalTime) VALUES(STR_TO_DATE('15/01/2017 10:10:15', '%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO CorrectDatetimeDemo(ArrivalTime) VALUES(STR_TO_DATE('12/04/2016 15:30:35', '%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)
SELECT स्टेटमेंट का उपयोग करके टेबल से सभी रिकॉर्ड प्रदर्शित करें।
क्वेरी निम्नलिखित है:
mysql> SELECT * FROM CorrectDatetimeDemo;
निम्नलिखित आउटपुट है:
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-18 11:15:45 | | 2 | 2017-01-15 10:10:15 | | 3 | 2016-04-12 15:30:35 | +----+---------------------+ 3 rows in set (0.00 sec)