Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ดึงวันที่เดียวที่เรียงลำดับแล้วด้วย LIMIT 1 ใน MySQL

ใช้ 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 เอาแถวแรก