কম্পিউটার টিউটোরিয়াল

MySQL-এ স্ট্রিং ডেট ফিল্ড দিয়ে ORDER BY করা


STR_TO_DATE ফাংশন ব্যবহার

যদি ডেট স্ট্রিং ফরম্যাটে (যেমন 'dd/mm/YYYY') সংরক্ষিত থাকে, তবে সেটি প্রপার ডেট টাইপে কনভার্ট করে সর্ট করতে STR_TO_DATE() ব্যবহার করুন।

সিনট্যাক্স

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

উদাহরণ

টেবিল তৈরি (VARCHAR ডেট)

mysql> create table orderByDateFormatDemo (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ArrivalDatetime varchar(100)
    -> );
Query OK, 0 rows affected (0.73 sec)

ডেটা ইনসার্ট

mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('01/10/2012');
Query OK, 1 row affected (0.20 sec)
mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('03/11/2010');
Query OK, 1 row affected (0.15 sec)
mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('04/09/2018');
Query OK, 1 row affected (0.14 sec)
mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('31/01/2019');
Query OK, 1 row affected (0.17 sec)
mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('21/04/2017');
Query OK, 1 row affected (0.21 sec)
mysql> insert into orderByDateFormatDemo(ArrivalDatetime) values('23/05/2016');
Query OK, 1 row affected (0.12 sec)

সর্ট ছাড়া ডেটা

mysql> SELECT * FROM orderByDateFormatDemo;

আউটপুট

+----+-----------------+
| Id | ArrivalDatetime |
+----+-----------------+
|  1 | 01/10/2012      |
|  2 | 03/11/2010      |
|  3 | 04/09/2018      |
|  4 | 31/01/2019      |
|  5 | 21/04/2017      |
|  6 | 23/05/2016      |
+----+-----------------+

STR_TO_DATE দিয়ে DESC সর্ট

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

আউটপুট (সর্বশেষ ডেটা প্রথমে)

+----+-----------------+
| Id | ArrivalDatetime |
+----+-----------------+
|  4 | 31/01/2019      |
|  3 | 04/09/2018      |
|  5 | 21/04/2017      |
|  6 | 23/05/2016      |
|  1 | 01/10/2012      |
|  2 | 03/11/2010      |
+----+-----------------+

ফরম্যাট স্পেসিফায়ার: %d=দিন, %m=মাস, %Y=৪ অঙ্কের বছর। ডেটা টাইপ সঠিক রাখলে (DATE/DATETIME) এই কনভারশনের দরকার নয়।

  1. MySQL-এ স্ট্রিং ডেটকে ASC ক্রমে সাজানো (STR_TO_DATE)

  2. MySQL-এ YYYY-MM-DD ফরম্যাটকে DD Month, YYYY-এ রূপান্তর করা (DATE_FORMAT)

  3. MySQL-এ ORDER BY IF() ব্যবহার করে নির্দিষ্ট মানকে প্রথমে আনার সর্টিং

  4. MySQL-এ GROUP BY ও ORDER BY FIELD একসাথে ব্যবহার করে কাস্টম সর্টিং