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

MySQL ค้นหาเวลาล่าสุด (Most Recent Time) จากข้อมูล VARCHAR

เมื่อเก็บเวลาในรูปแบบข้อความ (VARCHAR) เช่น '7:30AM', '9:00PM' สามารถใช้ STR_TO_DATE() แปลงเป็นเวลาจริง แล้วจึงเรียงลำดับและดึงค่าล่าสุดได้

ตัวอย่างการใช้งาน

1. สร้างตารางเก็บเวลาเป็น VARCHAR

mysql> CREATE TABLE DemoTable (
    DueTime VARCHAR(20)
);
Query OK, 0 rows affected (0.87 sec)

2. เพิ่มข้อมูลทดสอบ

mysql> INSERT INTO DemoTable VALUES('7:30AM');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('9:00PM');
Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES('11:00PM');
Query OK, 1 row affected (0.13 sec)

3. ข้อมูลก่อนเรียงลำดับ

mysql> SELECT * FROM DemoTable;
+---------+
| DueTime |
+---------+
| 7:30AM  |
| 9:00PM  |
| 11:00PM |
+---------+

4. คำสั่งหาเวลาล่าสุด (DESC + LIMIT 1)

mysql> SELECT * FROM DemoTable
    -> ORDER BY STR_TO_DATE(DueTime, '%h:%i%p') DESC
    -> LIMIT 1;

คำอธิบาย Format Specifier:

  • %h : ชั่วโมงแบบ 12 ชั่วโมง (01-12)
  • %i : นาที (00-59)
  • %p : AM/PM

5. ผลลัพธ์

+---------+
| DueTime |
+---------+
| 11:00PM |
+---------+

สรุป

ใช้ STR_TO_DATE() แปลงสตริงเวลาให้เป็นค่าเวลาจริง (TIME) ก่อน แล้วค่อยใช้ ORDER BY ... DESC LIMIT 1 เพื่อดึงค่าที่มากที่สุด (ล่าสุด) ได้อย่างถูกต้อง