ใช้ ORDER BY STR_TO_DATE(...) เรียงวันที่ที่เก็บเป็นสตริง แล้ว LIMIT 1 เอาแถวเดียว
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> DueDate VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง (รูปแบบ DD-MM-YYYY)
mysql> INSERT INTO DemoTable VALUES('10-06-2019');
mysql> INSERT INTO DemoTable VALUES('01-12-2016');
mysql> INSERT INTO DemoTable VALUES('31-01-2018');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------------+ | DueDate | +------------+ | 10-06-2019 | | 01-12-2016 | | 31-01-2018 | +------------+
คำสั่งดึงวันที่เก่าที่สุด (เรียงจากน้อยไปมาก LIMIT 1)
mysql> SELECT * FROM DemoTable ORDER BY STR_TO_DATE(DueDate, '%d-%m-%Y') LIMIT 1;
ผลลัพธ์:
+------------+ | DueDate | +------------+ | 01-12-2016 | +------------+
คำอธิบาย: STR_TO_DATE(DueDate, '%d-%m-%Y') แปลงสตริงเป็น DATE เพื่อให้เรียงถูกต้อง | ORDER BY ... ASC (default) เรียงเก่าสุดก่อน | LIMIT 1 เอาแถวแรก