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

MySQL में गैर-दिनांक प्रारूप वाले दिनांक फील्ड द्वारा ORDER BY

समस्या

जब दिनांक डेटा VARCHAR या TEXT कॉलम में गैर-मानक प्रारूप (जैसे 'dd/mm/yyyy') में संग्रहीत होता है, तो सामान्य ORDER BY वर्णानुक्रम में सॉर्ट करता है, जो गलत परिणाम देता है।

समाधान: STR_TO_DATE() फ़ंक्शन

STR_TO_DATE() का उपयोग करके स्ट्रिंग को उचित दिनांक में बदलें, फिर ORDER BY करें।

सिंटैक्स

SELECT * FROM yourTableName 
ORDER BY STR_TO_DATE(yourColumnName, '%d/%m/%Y') DESC;

व्यावहारिक उदाहरण

टेबल बनाना और डेटा डालना

mysql> CREATE TABLE orderByDateFormatDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ArrivalDatetime VARCHAR(100)
    -> );

mysql> INSERT INTO orderByDateFormatDemo(ArrivalDatetime) VALUES
    -> ('01/10/2012'), ('03/11/2010'), ('04/09/2018'),
    -> ('31/01/2019'), ('21/04/2017'), ('23/05/2016');

सामान्य ORDER BY (गलत)

mysql> SELECT * FROM orderByDateFormatDemo ORDER BY ArrivalDatetime DESC;

वर्णानुक्रम: 31/01/2019, 23/05/2016, 21/04/2017, 04/09/2018, 03/11/2010, 01/10/2012

STR_TO_DATE के साथ सही ORDER BY

mysql> SELECT * FROM orderByDateFormatDemo 
    -> ORDER BY STR_TO_DATE(ArrivalDatetime, '%d/%m/%Y') DESC;

सही परिणाम

IdArrivalDatetime
431/01/2019
304/09/2018
521/04/2017
623/05/2016
101/10/2012
203/11/2010

सामान्य दिनांक प्रारूप स्पेसिफायर

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

  • हमेशा दिनांक डेटा के लिए DATE/DATETIME डेटा प्रकार का उपयोग करें
  • यदि स्ट्रिंग में संग्रहीत करना पड़े, तो ISO प्रारूप (YYYY-MM-DD) का उपयोग करें
  • बड़े डेटासेट पर STR_TO_DATE धीमा हो सकता है - इंडेक्सिंग पर विचार करें
  1. - MySQL में DATE_FORMAT() से YYYY-MM-DD को DD Month, YYYY में बदलना

    DATE_FORMAT() फंक्शन MySQL में DATE_FORMAT(date, format) फंक्शन डेट/टाइम मान को निर्दिष्ट फॉर्मेट स्ट्रिंग के अनुसार फॉर्मेट करता है। उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना mysql> CREATE TABLE DemoTable845(AdmissionDate DATE); Query OK, 0 rows affected (1.10 sec) रिकॉर्ड्स इन्सर्ट करना mysql&g

  1. - MySQL में एक ही फ़ील्ड पर कस्टम सॉर्ट ऑर्डर लागू करें

    इसके लिए ORDER BY IF() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable801 ( Score int ); Query OK, 0 rows affected (0.69 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable801 values(30); Query OK, 1 row affected (0.19 sec) m

  1. - MySQL में ORDER BY FIELD को GROUP BY के साथ एकल क्वेरी में कैसे उपयोग करें

    इसके लिए, आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable ( Message text ); Query OK, 0 rows affected (1.15 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(Good); Query OK, 1 row affected (0.43 sec) mysql> insert into Demo

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
प्रारूपअर्थउदाहरण
%dदिन (00-31)31
%mमहीना (00-12)01
%Yवर्ष (4 अंक)2019
%yवर्ष (2 अंक)19