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

MySQL: เลือกวันที่ที่ห่างจากวันนี้ 1 สัปดาห์พอดีด้วย DATEDIFF

ตรวจสอบวันที่ปัจจุบัน

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);