ใน MySQL คอลัมน์ชนิด TIMESTAMP (และ DATETIME) เรียงลำดับได้โดยตรงด้วย ORDER BY ไม่ต้องใช้ฟังก์ชัน TIMESTAMP() เพิ่มเติม
รูปแบบคำสั่ง
SELECT timestamp_column
FROM table_name
ORDER BY timestamp_column ASC;
ASC- น้อยไปมาก (เก่าสุดก่อน) - ค่าเริ่มต้นDESC- มากไปน้อย (ใหม่สุดก่อน)
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
CREATE TABLE Timestamp_TableDemo (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
yourTimestamp TIMESTAMP
);
INSERT INTO Timestamp_TableDemo (yourTimestamp) VALUES
('2019-02-06 17:34:57'),
('2019-02-06 17:32:30'),
('2019-02-06 17:32:09');
ข้อมูลในตาราง (ลำดับที่ insert):
+----+---------------------+
| Id | yourTimestamp |
+----+---------------------+
| 1 | 2019-02-06 17:34:57 |
| 2 | 2019-02-06 17:32:30 |
| 3 | 2019-02-06 17:32:09 |
+----+---------------------+
2. เรียงลำดับจากเก่าสุดไปใหม่สุด (ASC)
SELECT yourTimestamp
FROM Timestamp_TableDemo
ORDER BY yourTimestamp ASC;
ผลลัพธ์:
+---------------------+
| yourTimestamp |
+---------------------+
| 2019-02-06 17:32:09 |
| 2019-02-06 17:32:30 |
| 2019-02-06 17:34:57 |
+---------------------+
3. เรียงลำดับจากใหม่สุดไปเก่าสุด (DESC)
SELECT yourTimestamp
FROM Timestamp_TableDemo
ORDER BY yourTimestamp DESC;
ผลลัพธ์:
+---------------------+
| yourTimestamp |
+---------------------+
| 2019-02-06 17:34:57 |
| 2019-02-06 17:32:30 |
| 2019-02-06 17:32:09 |
+---------------------+
ข้อสังเกตเพิ่มเติม
- ทำงานได้กับ
DATETIME,DATE,TIMEเช่นกัน - สามารถเรียงหลายคอลัมน์:
ORDER BY date_col ASC, time_col DESC - ใช้กับ
LIMITได้:ORDER BY ts DESC LIMIT 10(หา 10 รายการล่าสุด) - หากคอลัมน์เป็น VARCHAR ที่เก็บวันที่ ให้ CAST ก่อน:
ORDER BY CAST(date_str AS DATETIME)
MySQL จัดการการเปรียบเทียบวันที่/เวลาในชนิดข้อมูล native ได้อย่างมีประสิทธิภาพโดยไม่ต้องแปลง