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

ค้นหาแถวที่ Timestamp มากกว่าช่วงเวลาก่อนหน้า N นาทีใน MySQL

เมื่อต้องการดึงข้อมูลที่มี Timestamp ใหม่กว่าช่วงเวลาย้อนหลัง N นาที (หรือ N ชั่วโมง/วัน) ให้ใช้ DATE_SUB(NOW(), INTERVAL N MINUTE) ในเงื่อนไข WHERE

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

สร้างตารางเก็บเวลาเข้า:

mysql> create table DemoTable1335 (ArrivalTime datetime);
mysql> insert into DemoTable1335 values('2019-09-19 22:54:00'),('2019-09-19 22:59:00'),('2019-09-19 22:56:00'),('2019-09-19 22:52:00');

ข้อมูลทั้งหมด:

+---------------------+
| ArrivalTime         |
+---------------------+
| 2019-09-19 22:54:00 |
| 2019-09-19 22:59:00 |
| 2019-09-19 22:56:00 |
| 2019-09-19 22:52:00 |
+---------------------+

เวลาปัจจุบัน (สมมติ):

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-09-19 22:55:53 |
+---------------------+

คำสั่งดึงข้อมูล 2 นาทีล่าสุด (หลัง 22:53:53)

mysql> select * from DemoTable1335 where ArrivalTime > date_sub(now(), interval 2 minute);

ผลลัพธ์ (ได้ 22:56 และ 22:59)

+---------------------+
| ArrivalTime         |
+---------------------+
| 2019-09-19 22:59:00 |
| 2019-09-19 22:56:00 |
+---------------------+

รูปแบบ INTERVAL ที่ใช้บ่อย:

  • INTERVAL 1 MINUTE, INTERVAL 1 HOUR, INTERVAL 1 DAY, INTERVAL 1 WEEK, INTERVAL 1 MONTH, INTERVAL 1 YEAR
  • รวมได้: INTERVAL 1 DAY 2 HOUR
  • ใช้ DATE_ADD() สำหรับบวกเวลา, DATE_SUB() สำหรับลบเวลา