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

แสดงบันทึกที่มีวันที่เป็นวันนี้หรือพรุ่งนี้ใน MySQL ด้วย CURDATE() และ INTERVAL

การกรองวันที่เป็นวันนี้หรือพรุ่งนี้ด้วย IN() และ CURDATE()

ใช้ CURDATE() สำหรับวันนี้ และ CURDATE() + INTERVAL 1 DAY สำหรับพรุ่งนี้ ร่วมกับ IN เพื่อกรองวันที่ในคอลัมน์ DATE

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (AdmissionDate DATE);
Query OK, 0 rows affected (0.87 sec)

mysql> INSERT INTO DemoTable VALUES('2019-08-24');
mysql> INSERT INTO DemoTable VALUES('2019-08-25');
mysql> INSERT INTO DemoTable VALUES('2019-08-20');

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

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24    |
| 2019-08-25    |
| 2019-08-20    |
+---------------+
3 rows in set (0.00 sec)

คำสั่งแสดงวันที่เป็นวันนี้หรือพรุ่งนี้

mysql> SELECT * FROM DemoTable
    WHERE AdmissionDate IN (CURDATE(), CURDATE() + INTERVAL 1 DAY);

ผลลัพธ์ (สมมติวันนี้ 2019-08-24):

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24    |
| 2019-08-25    |
+---------------+
2 rows in set (0.00 sec)

คำอธิบาย

  • CURDATE() : วันที่ปัจจุบัน (ไม่รวมเวลา)
  • CURDATE() + INTERVAL 1 DAY : พรุ่งนี้
  • IN (val1, val2) : ตรงกับค่าใดค่าหนึ่งในรายการ
  • ใช้ได้กับคอลัมน์ DATE, DATETIME, TIMESTAMP (MySQL แปลงอัตโนมัติ)
  • มีประสิทธิภาพดีกว่า BETWEEN สำหรับค่าที่ไม่ต่อเนื่อง