Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में VARCHAR को DATETIME में कन्वर्ट करके तुलना करना

परिचय

जब डेटटाइम मान 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 में स्टोर करने से बचें।

  1. - MySQL समय को HH:MM:SS से HH:MM में बदलें

    TIME_FORMAT() फंक्शन का उपयोग करके समय फॉर्मेट बदलना बदलने के लिए MySQL TIME_FORMAT() का उपयोग करें। पहले टेबल बनाएं: create table DemoTable1419 ( ArrivalTime time ); Query OK, 0 rows affected (0.78 sec) रिकॉर्ड डालें। यहां हमने समय रिकॉर्ड डाले हैं: insert into DemoTable1419 values(09:59:34); Que

  1. - MySQL में STR_TO_DATE() और REPLACE() का उपयोग करके CHAR फ़ील्ड को DATETIME फ़ील्ड में परिवर्तित करना

    MySQL में CHAR से DATETIME रूपांतरण जब दिनांक-स्ट्रिंग्स गैर-मानक प्रारूप में CHAR/VARCHAR कॉलम में संग्रहीत होती हैं (जैसे MM/DD/YYYY HH:MI), तो उन्हें मानक DATETIME में परिवर्तित करने के लिए STR_TO_DATE() के साथ REPLACE() का उपयोग करें। उदाहरण: स्लैश-पृथक दिनांक-स्ट्रिंग्स परिवर्तित करना SELECT

  1. - MySQL में TIME_FORMAT और SUBSTRING से VARCHAR समय को वास्तविक समय में बदलें

    MySQL में SUBSTRING() से घंटे/मिनट निकालकर TIME_FORMAT() से HH:MM प्रारूप में बदल सकते हैं। उदाहरण: HHMM प्रारूप (1620) को HH:MM (04:20) में 1. टेबल बनाएं CREATE TABLE DemoTable1591 (ArrivalTime VARCHAR(20)); 2. डेटा डालें INSERT INTO DemoTable1591 VALUES(1620), (2345), (2210); 3. रूपांतरण क्व