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

วิธีดึงวันที่มากกว่า NOW() + 10 วันใน MySQL

กรองวันที่ในอนาคต 10 วันด้วย DATE_ADD และ WHERE

ใช้ DATE_ADD(NOW(), INTERVAL 10 DAY) คำนวณวันที่ 10 วันข้างหน้า แล้วกรองวันที่ในตารางที่มากกว่าค่านั้น

ตัวอย่างสร้างตารางและข้อมูล

CREATE TABLE DemoTable (ShippingDate DATE);

-- สมมติ NOW() = '2019-06-04 20:43:57'
INSERT INTO DemoTable VALUES
('2019-06-16'), ('2019-05-31'), ('2019-05-24'), ('2019-06-24');

ข้อมูลในตาราง

+--------------+
| ShippingDate |
+--------------+
| 2019-06-16   |
| 2019-05-31   |
| 2019-05-24   |
| 2019-06-24   |
+--------------+

คำสั่งดึงวันที่ > NOW() + 10 วัน

SELECT * FROM DemoTable 
WHERE ShippingDate > DATE_ADD(NOW(), INTERVAL 10 DAY);

ผลลัพธ์ (NOW()+10 = 2019-06-14)

+--------------+
| ShippingDate |
+--------------+
| 2019-06-16   |
| 2019-06-24   |
+--------------+

คำอธิบาย:

  • DATE_ADD(NOW(), INTERVAL 10 DAY) บวก 10 วันกับวันที่/เวลาปัจจุบัน
  • ShippingDate > ... เปรียบเทียบ DATE กับ DATETIME → MySQL แปลง DATE เป็น DATETIME 00:00:00 ก่อนเปรียบเทียบ
  • วันที่ 2019-06-16 (00:00:00) > 2019-06-14 20:43:57 → ตรงเงื่อนไข

รูปแบบอื่น:

  • WHERE ShippingDate > CURDATE() + INTERVAL 10 DAY (ใช้วันที่อย่างเดียว ไม่รวมเวลา)
  • WHERE ShippingDate >= DATE_ADD(CURDATE(), INTERVAL 10 DAY) (รวมวันพอดี 10 วัน)

⚐ ประสิทธิภาพ: หาก ShippingDate มี Index ให้คำนวณวันที่เป้าหมายใน Application แล้วส่งมาเป็นค่าคงที่ WHERE ShippingDate > '2019-06-14' เพื่อให้ใช้ Index ได้เต็มที่