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

MySQL में AM/PM फॉर्मेट में समय कैसे सॉर्ट करें?

STR_TO_DATE से AM/PM समय स्ट्रिंग को सही क्रम में सॉर्ट करें

वर्चर कॉलम में संग्रहीत '09:45 PM' जैसे AM/PM फॉर्मेट समय को सही कालानुक्रमिक क्रम में सॉर्ट करने के लिए STR_TO_DATE() के साथ ORDER BY का उपयोग करें।

समस्या

स्ट्रिंग के रूप में सॉर्ट करने पर '09:45 PM', '11:56 AM' से पहले आ जाएगा (वर्णानुक्रम में), जो गलत है।

टेबल और डेटा

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserLogoutTime VARCHAR(200)
);

mysql> INSERT INTO DemoTable(UserLogoutTime) VALUES('09:45 PM');
mysql> INSERT INTO DemoTable(UserLogoutTime) VALUES('11:56 AM');
mysql> INSERT INTO DemoTable(UserLogoutTime) VALUES('01:01 AM');
mysql> INSERT INTO DemoTable(UserLogoutTime) VALUES('02:01 PM');
mysql> INSERT INTO DemoTable(UserLogoutTime) VALUES('04:10 PM');

स्ट्रिंग सॉर्ट (गलत)

mysql> SELECT UserLogoutTime FROM DemoTable ORDER BY UserLogoutTime;

+----------------+
| UserLogoutTime |
+----------------+
| 01:01 AM       |
| 02:01 PM       |
| 04:10 PM       |
| 09:45 PM       |
| 11:56 AM       |  -- गलत स्थान पर
+----------------+

सही सॉर्ट: STR_TO_DATE के साथ

mysql> SELECT UserLogoutTime FROM DemoTable 
    -> ORDER BY STR_TO_DATE(UserLogoutTime, '%l:%i %p');

+----------------+
| UserLogoutTime |
+----------------+
| 01:01 AM       |
| 11:56 AM       |
| 02:01 PM       |
| 04:10 PM       |
| 09:45 PM       |
+----------------+

फॉर्मेट स्पेसिफायर

स्पेसिफायरअर्थ
%lघंटा (1-12), अग्रणी शून्य के बिना
%iमिनट (00-59)
%pAM या PM

अवरोही क्रम के लिए

ORDER BY STR_TO_DATE(UserLogoutTime, '%l:%i %p') DESC

सर्वोत्तम अभ्यास

समय डेटा के लिए TIME या DATETIME टाइप का उपयोग करें। स्ट्रिंग में समय संग्रहीत करना केवल लिगेसी/इम्पोर्ट स्थितियों के लिए करें।

  1. PHP/MySQL में समय प्रबंधन: 12-घंटे और 24-घंटे प्रारूप के बीच रूपांतरण PHP/MySQL में समय प्रबंधन: 12-घंटे और 24-घंटे प्रारूप के बीच रूपांतरण

    PHP में समय रूपांतरण PHP में strtotime() और date() फ़ंक्शन का उपयोग करके 12-घंटे प्रारूप को 24-घंटे प्रारूप में बदलें। PHP कोड $timeValue = 8:55 PM; $changeTimeFormat = date(H:i:s, strtotime($timeValue)); echo The change Format in 24 Hours = . $changeTimeFormat; आउटपुट: The change Format in 24 Hou

  1. - MySQL में सेकंड के आधार पर समय की गणना करना

    MySQL में TIME_TO_SEC और SEC_TO_TIME के साथ समय गणना MySQL में समय मानों पर अंकगणितीय संक्रियाएं करने के लिए, उन्हें सेकंड में परिवर्तित करें, गणना करें, फिर वापस समय फॉर्मेट में परिवर्तित करें। व्यावहारिक उदाहरण तालिका बनाना CREATE TABLE DemoTable ( LogoutTime TIME ); समय मान डालना INSERT

  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. रूपांतरण क्व