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

ดึงข้อมูล DATETIME จาก 7 วันที่ผ่านมาใน MySQL ด้วย INTERVAL

การค้นหาบันทึกที่มีวันที่ตรงกับ 7 วันที่ผ่านมาอย่างแม่นยำ

ใช้ DATE() แปลง DATETIME ให้เหลือวันที่ แล้วเปรียบเทียบกับ CURDATE() - INTERVAL 7 DAY เพื่อหาบันทึกของวันที่แน่นอน 7 วันที่แล้ว

สร้างตารางและเพิ่มข้อมูล (สมมติวันนี้ 2019-08-23)

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    AdmissionDate DATETIME
);
Query OK, 0 rows affected (0.83 sec)

mysql> INSERT INTO DemoTable(AdmissionDate) VALUES('2019-01-23');
mysql> INSERT INTO DemoTable(AdmissionDate) VALUES('2019-08-15');
mysql> INSERT INTO DemoTable(AdmissionDate) VALUES('2019-08-16');
mysql> INSERT INTO DemoTable(AdmissionDate) VALUES('2019-08-24');

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

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+----+---------------------+
| Id | AdmissionDate       |
+----+---------------------+
| 1  | 2019-01-23 00:00:00 |
| 2  | 2019-08-15 00:00:00 |
| 3  | 2019-08-16 00:00:00 |
| 4  | 2019-08-24 00:00:00 |
+----+---------------------+
4 rows in set (0.00 sec)

คำสั่งดึงข้อมูลวันที่ 7 วันที่แล้ว (2019-08-16)

mysql> SELECT * FROM DemoTable WHERE DATE(AdmissionDate) = CURDATE() - INTERVAL 7 DAY;

ผลลัพธ์:

+----+---------------------+
| Id | AdmissionDate       |
+----+---------------------+
| 3  | 2019-08-16 00:00:00 |
+----+---------------------+
1 row in set (0.04 sec)

คำอธิบาย

  • DATE(AdmissionDate) : ดึงเฉพาะส่วนวันที่ (ตัดเวลาออก)
  • CURDATE() : วันที่ปัจจุบัน (2019-08-23)
  • CURDATE() - INTERVAL 7 DAY : 7 วันที่แล้ว (2019-08-16)
  • เปรียบเทียบวันที่อย่างแม่นยำ (ไม่ใช่ช่วง)
  • ต่างจาก BETWEEN ที่เป็นช่วงเวลา