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

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

MySQL-এ যদি ডেট স্ট্রিং আকারে (VARCHAR) সংরক্ষিত থাকে, তবে সেটি স্ট্রিং হিসেবে সাজায় (লেক্সিকোগ্রাফিক্যালি), যা ভুল ফলাফল দেয়। সঠিক ক্রমে সাজাতে STR_TO_DATE() ব্যবহার করে ডেট অবজেক্টে রূপান্তর করা হয়।

টেবিল ও ডেটা (স্ট্রিং ফরম্যাটে)

mysql> CREATE TABLE DemoTable (AdmissionDate VARCHAR(200));
mysql> INSERT INTO DemoTable VALUES 
('12-01-2019'), ('14-12-2016'), ('26-04-2018'), ('31-05-2013');

সাধারণ স্ট্রিং সর্ট (ভুল)

+---------------+
| AdmissionDate |
+---------------+
| 12-01-2019    |
| 14-12-2016    |
| 26-04-2018    |
| 31-05-2013    |
+---------------+

STR_TO_DATE() দিয়ে সঠিক ASC সর্ট

mysql> SELECT * FROM DemoTable 
       ORDER BY STR_TO_DATE(AdmissionDate, '%d-%m-%Y') ASC;

ফলাফল (সঠিক ক্রোনোলজিক্যাল অর্ডার)

+---------------+
| AdmissionDate |
+---------------+
| 31-05-2013    |
| 14-12-2016    |
| 26-04-2018    |
| 12-01-2019    |
+---------------+

ব্যাখ্যা: STR_TO_DATE(str, format) স্ট্রিংকে ডেট অবজেক্টে রূপান্তর করে। %d-%m-%Y ফরম্যাটে দিন-মাস-বছর। ORDER BY-এ এই ফাংশন কল করলে MySQL আন্তরিকভাবে ডেট হিসেবে সাজায়। সেরা প্র্যাকটিস: ডেট কলামে DATE বা DATETIME টাইপ ব্যবহার করুন।

  1. MySQL-এ ORDER BY CASE ব্যবহার করা

  2. MySQL-এ VARCHAR টাইপের ডেট কলাম অনুযায়ী সর্ট করা

  3. MySQL-এ ORDER BY INSTR() দিয়ে নির্দিষ্ট শব্দवाले রেকর্ড প্রথমে দেখানো

  4. MySQL-এ শুরুতম অক্ষর অনুযায়ী অর্ডার বাই কীভাবে করবেন?