परिचय
जब डेटटाइम मान VARCHAR कॉलम में गैर-मानक फॉर्मेट (जैसे 'MM/DD/YYYY HH:MI:SS') में स्टोर होते हैं, तो STR_TO_DATE() फंक्शन का उपयोग करके उन्हें DATETIME में कन्वर्ट करके तुलना की जा सकती है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable1565 (
-> ArrivalDatetime VARCHAR(40)
-> );
Query OK, 0 rows affected (0.82 sec)
mysql> INSERT INTO DemoTable1565 VALUES('10/01/2019 21:29:35');
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO DemoTable1565 VALUES('10/13/2019 4:56:00');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1565 VALUES('10/13/2018 12:40:46');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1565 VALUES('10/13/2019 21:30:00');
Query OK, 1 row affected (0.58 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1565;
आउटपुट:
+---------------------+
| ArrivalDatetime |
+---------------------+
| 10/01/2019 21:29:35 |
| 10/13/2019 4:56:00 |
| 10/13/2018 12:40:46 |
| 10/13/2019 21:30:00 |
+---------------------+
4 rows in set (0.00 sec)
वर्तमान तिथि/समय
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2019-10-13 21:34:14 |
+---------------------+
1 row in set (0.00 sec)
VARCHAR को DATETIME में कन्वर्ट करके तुलना करने की क्वेरी
mysql> SELECT * FROM DemoTable1565
-> WHERE STR_TO_DATE(ArrivalDatetime, '%m/%d/%Y') = CURDATE();
परिणाम
+---------------------+
| ArrivalDatetime |
+---------------------+
| 10/13/2019 4:56:00 |
| 10/13/2019 21:30:00 |
+---------------------+
2 rows in set, 4 warnings (0.03 sec)
व्याख्या
STR_TO_DATE(ArrivalDatetime, '%m/%d/%Y')- स्ट्रिंग को फॉर्मेट स्ट्रिंग के अनुसार DATETIME में पार्स करता है%m- 2-अंकीय महीना (01-12)%d- 2-अंकीय दिन (01-31)%Y- 4-अंकीय वर्षCURDATE()- वर्तमान तिथि (2019-10-13)- केवल तिथि भाग की तुलना होती है (समय भाग अनदेखा)
चेतावनी (Warnings)
2 rows in set, 4 warnings - चेतावनियां उन पंक्तियों के लिए हैं जहां समय भाग फॉर्मेट से मेल नहीं खाता (फॉर्मेट में केवल तिथि है)। इन्हें नजरअंदाज किया जा सकता है या फॉर्मेट में समय शामिल करके ठीक किया जा सकता है:
STR_TO_DATE(ArrivalDatetime, '%m/%d/%Y %H:%i:%s')
सामान्य STR_TO_DATE फॉर्मेट्स
| इनपुट फॉर्मेट | STR_TO_DATE पैटर्न |
|---|---|
| MM/DD/YYYY HH:MI:SS | %m/%d/%Y %H:%i:%s |
| DD-MM-YYYY | %d-%m-%Y |
| YYYY-MM-DD | %Y-%m-%d |
| DD/MM/YY | %d/%m/%y |
सर्वोत्तम अभ्यास
डेटटाइम डेटा के लिए हमेशा DATETIME या TIMESTAMP डेटा टाइप उपयोग करें। VARCHAR में स्टोर करने से बचें।