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

จัดเรียงข้อมูลตาม timestamp ใน MySQL

ใช้ ORDER BY STR_TO_DATE(timestamp_column, 'format') แปลงสตริง timestamp เป็นวันที่จริงก่อนเรียง

สร้างตารางตัวอย่าง

mysql> CREATE TABLE DemoTable (
    -> `timestamp` VARCHAR(100)
    -> );

เพิ่มข้อมูลตัวอย่าง (รูปแบบ MM/DD/YYYY HH:MM:SS AM/PM)

mysql> INSERT INTO DemoTable VALUES('06/22/2019 01:10:20 PM');
mysql> INSERT INTO DemoTable VALUES('06/22/2019 12:00:27 PM');
mysql> INSERT INTO DemoTable VALUES('06/22/2019 06:56:20 AM');
mysql> INSERT INTO DemoTable VALUES('06/22/2019 07:10:11 AM');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+------------------------+
| timestamp              |
+------------------------+
| 06/22/2019 01:10:20 PM |
| 06/22/2019 12:00:27 PM |
| 06/22/2019 06:56:20 AM |
| 06/22/2019 07:10:11 AM |
+------------------------+

คำสั่งเรียงตามเวลาจริง

mysql> SELECT * FROM DemoTable ORDER BY STR_TO_DATE(`timestamp`, '%m/%d/%Y %h:%i:%s %p');

ผลลัพธ์ (เรียงจากเช้ามาเย็น):

+------------------------+
| timestamp              |
+------------------------+
| 06/22/2019 06:56:20 AM |
| 06/22/2019 07:10:11 AM |
| 06/22/2019 12:00:27 PM |
| 06/22/2019 01:10:20 PM |
+------------------------+

คำอธิบาย: รูปแบบ %m/%d/%Y %h:%i:%s %p ตรงกับ MM/DD/YYYY HH:MM:SS AM/PM | STR_TO_DATE แปลงเป็น DATETIME แล้ว ORDER BY เรียงได้ถูกต้อง