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

เลือกข้อมูล 10 นาทีย้อนหลังจากเวลาปัจจุบันใน MySQL

การค้นหาข้อมูลในช่วงเวลาล่าสุด 10 นาที

ใช้ฟังก์ชัน DATE_SUB() ร่วมกับ NOW() เพื่อคำนวณเวลา 10 นาทีก่อนหน้า แล้วเปรียบเทียบกับคอลัมน์ datetime

ไวยากรณ์

SELECT * FROM yourTableName 
WHERE yourDateTimeColumn >= DATE_SUB(NOW(), INTERVAL 10 MINUTE);

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

สร้างตารางผู้ใช้:

CREATE TABLE users (
    Id INT NOT NULL AUTO_INCREMENT,
    UserName VARCHAR(20),
    UserLastseen DATETIME,
    PRIMARY KEY(Id)
);

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

INSERT INTO users(UserName, UserLastseen) VALUES('Larry', '2019-01-15 02:45:00');
INSERT INTO users(UserName, UserLastseen) VALUES('Sam', NOW());
INSERT INTO users(UserName, UserLastseen) VALUES('Mike', '2019-01-15 02:30:00');
INSERT INTO users(UserName, UserLastseen) VALUES('Bob', '2019-01-15 15:02:00');
INSERT INTO users(UserName, UserLastseen) VALUES('David', '2019-01-15 14:55:00');

ค้นหาผู้ใช้ที่ online ใน 10 นาทีล่าสุด:

SELECT * FROM users 
WHERE UserLastseen >= DATE_SUB(NOW(), INTERVAL 10 MINUTE);

การปรับเปลี่ยนช่วงเวลา

INTERVAL 5 MINUTEINTERVAL 1 HOURINTERVAL 1 DAYINTERVAL 7 DAYINTERVAL 30 DAY
ช่วงเวลาคำสั่ง
5 นาที
1 ชั่วโมง
1 วัน
7 วัน
30 วัน

คำแนะนำประสิทธิภาพ

  • สร้างดัชนี (Index) บนคอลัมน์ datetime ที่ใช้ใน WHERE
  • หลีกเลี่ยงการใช้ฟังก์ชันบนคอลัมน์ (เช่น DATE(UserLastseen) >= ...) เพราะจะทำให้ index ไม่ทำงาน
  • ใช้ NOW() สำหรับ datetime, CURDATE() สำหรับ date only

หมายเหตุ

หากคอลัมน์เป็น TIMESTAMP จะมีการแปลงโซนเวลาอัตโนมัติ ส่วน DATETIME จะเก็บค่าตรงๆ ตามที่ป้อนเข้าไป