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

เลือกข้อมูลทั้งหมดยกเว้นวันนี้ใน MySQL

ใช้ DATE(column) != CURDATE() เพื่อกรองเฉพาะวันที่ไม่ใช่วันนี้

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

1. สร้างตารางและข้อมูล (สมมติวันนี้ 2019-07-03)

mysql> CREATE TABLE DemoTable (Name VARCHAR(100), DueDate DATETIME);
mysql> INSERT INTO DemoTable VALUES 
('Chris', '2019-06-24'), ('Chris', '2018-01-01'), ('Robert', '2019-07-03'), ('Carol', '2019-08-03');

2. Query ยกเว้นวันนี้

mysql> SELECT * FROM DemoTable WHERE DATE(DueDate) != CURDATE();

ผลลัพธ์ (ตัด Robert วันที่ 2019-07-03 ออก)

+-------+---------------------+
| Name  | DueDate             |
+-------+---------------------+
| Chris | 2019-06-24 00:00:00 |
| Chris | 2018-01-01 00:00:00 |
| Carol | 2019-08-03 00:00:00 |
+-------+---------------------+

ฟังก์ชันวันที่ที่เกี่ยวข้อง

ฟังก์ชันคืนค่าตัวอย่าง
CURDATE()วันที่ปัจจุบัน2019-07-03
CURRENT_DATE()วันที่ปัจจุบัน2019-07-03
NOW()วันที่เวลาปัจจุบัน2019-07-03 14:30:00
DATE(datetime)ส่วนวันที่อย่างเดียวDATE('2019-07-03 14:30') → '2019-07-03'

ประสิทธิภาพ: หลีกเลี่ยงฟังก์ชันบนคอลัมน์

-- ช้า: ไม่ใช้ Index ได้
WHERE DATE(DueDate) != CURDATE()

-- เร็ว: ใช้ Range Query (ต้องมี Index บน DueDate)
WHERE DueDate < CURDATE() OR DueDate >= CURDATE() + INTERVAL 1 DAY

คำอธิบาย: วิธี Range Query ครอบคลุมทั้งวันที่น้อยกว่าวันนี้ และมากกว่าหรือเท่ากับพรุ่งนี้ = ไม่ใช่วันนี้