ตรวจสอบวันที่ปัจจุบัน
mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-12-20 | +------------+
สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1990 ( ShippingDate date );
mysql> insert into DemoTable1990 values('2019-12-13');
mysql> insert into DemoTable1990 values('2019-12-21');
mysql> insert into DemoTable1990 values('2019-12-20');
mysql> insert into DemoTable1990 values('2019-12-24');
ข้อมูลในตาราง
+--------------+
| ShippingDate |
+--------------+
| 2019-12-13 |
| 2019-12-21 |
| 2019-12-20 |
| 2019-12-24 |
+--------------+
Query หาวันที่ห่างจากวันนี้ 1 สัปดาห์ (7 วัน)
mysql> select * from DemoTable1990 where datediff(curdate(), ShippingDate) % 7 = 0;
ผลลัพธ์
+--------------+
| ShippingDate |
+--------------+
| 2019-12-13 |
| 2019-12-20 |
+--------------+
อธิบายตรรกะ
DATEDIFF(curdate(), ShippingDate) คำนวณความต่างวัน (วันนี้ - วันที่ส่ง)
% 7 = 0 หมายความว่าความต่างวันหาร 7 ลงตัว → ห่างกัน 1 สัปดาห์, 2 สัปดาห์, 3 สัปดาห์...
- วันที่ 2019-12-13: DATEDIFF = 7 วัน (1 สัปดาห์)
- วันที่ 2019-12-20: DATEDIFF = 0 วัน (วันนี้ = 0 สัปดาห์)
- วันที่ 2019-12-21: DATEDIFF = -1 (ไม่หาร 7 ลงตัว)
- วันที่ 2019-12-24: DATEDIFF = -4 (ไม่หาร 7 ลงตัว)
กรณีต้องการ "อีก 1 สัปดาห์ข้างหน้า" (Future 1 week)
SELECT * FROM DemoTable1990
WHERE ShippingDate = DATE_ADD(CURDATE(), INTERVAL 7 DAY);
กรณีต้องการ "ภายใน 1 สัปดาห์" (Within 1 week)
SELECT * FROM DemoTable1990
WHERE ShippingDate BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY);