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

การดึงข้อมูลล่าสุด 60 นาทีใน MySQL ด้วย INTERVAL

เพื่อดึงข้อมูลที่เกิดขึ้นภายใน 60 นาทีที่ผ่านมา ใช้ INTERVAL ร่วมกับฟังก์ชัน NOW()

รูปแบบคำสั่ง

select *from yourTableName where yourColumnName > now() - interval 60 minute;

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

mysql> create table DemoTable ( 
    ArrivalTime datetime ); 
Query OK, 0 rows affected (0.61 sec)

ตรวจสอบเวลาปัจจุบัน

mysql> select now(); 
+-----------------------+
| now()                 |
+-----------------------+
| 2019-09-17 00:04:54   |
+-----------------------+
1 row in set (0.00 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> insert into DemoTable values('2019-09-16 08:00:00'); Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2019-09-17 11:00:00'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2019-09-12 12:00:00'); Query OK, 1 row affected (0.15 sec)

แสดงข้อมูลทั้งหมด

mysql> select *from DemoTable;
+-----------------------+
| ArrivalTime           |
+-----------------------+
| 2019-09-16 08:00:00   |
| 2019-09-17 11:00:00   |
| 2019-09-12 12:00:00   |
+-----------------------+
3 rows in set (0.00 sec)

คิวรี่ดึงข้อมูลล่าสุด 60 นาที

mysql> select *from DemoTable where ArrivalTime > now() - interval 60 minute;

ผลลัพธ์ (เฉพาะแถวที่เวลาอยู่ในช่วง 60 นาทีย้อนหลัง):

+-----------------------+
| ArrivalTime           |
+-----------------------+
| 2019-09-17 11:00:00   |
+-----------------------+
1 row in set (0.00 sec)

การปรับใช้งานจริง

  • เปลี่ยน 60 minute เป็น 30 minute, 24 hour, 7 day ตามต้องการ
  • ใช้ NOW() สำหรับ datetime, CURDATE() สำหรับ date
  • เพิ่ม Index ให้คอลัมน์วันที่เพื่อประสิทธิภาพ CREATE INDEX idx_arrival ON DemoTable(ArrivalTime)

กรณีใช้กับ TIMESTAMP

หากคอลัมน์เป็น TIMESTAMP MySQL จะแปลงโซนเวลาอัตโนมัติ ต้องระวังการตั้งค่า time_zone ของเซิร์ฟเวอร์และ session