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) এই কনভারশনের দরকার নয়।