ฟังก์ชัน DATE_SUB() ใช้เพื่อลบช่วงเวลา (INTERVAL) ออกจากค่าที่เป็นวันที่ (DATE, DATETIME, หรือ TIMESTAMP) แล้วคืนผลลัพธ์ออกมาเป็นวันหรือวันเวลาที่ลดลง เหมาะสำหรับการลบวัน เวลา เดือน ปี หรือช่วงเวลาต่าง ๆ ออกจากวันที่ เช่น การหาวันเริ่มต้นย้อนหลัง, วันหมดอายุ, หาวันที่ก่อนกำหนด เป็นต้น
ประโยชน์ของฟังก์ชัน DATE_SUB()
- ใช้หาวันที่ย้อนหลัง เช่น 7 วันก่อนหน้า, 3 เดือนที่แล้ว
- ใช้กรองข้อมูลย้อนหลัง เช่น คำสั่งซื้อใน 30 วันที่ผ่านมา
- เหมาะสำหรับระบบรายงาน, การวิเคราะห์ข้อมูล, แจ้งเตือนหมดอายุ
- ใช้คำนวณวันที่อ้างอิง เช่น วันที่เริ่มโปรโมชัน หรือวันครบกำหนด
รูปแบบการใช้งาน
DATE_SUB(date, INTERVAL value unit)
dateคือวันที่ตั้งต้นที่ต้องการลบช่วงเวลาออกvalueคือจำนวนที่ต้องการลบunitคือหน่วยของช่วงเวลา เช่น- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
ตัวอย่างการใช้งาน
ลบวัน
SQL
SELECT DATE_SUB('2025-04-10', INTERVAL 7 DAY) AS result;
-- ผลลัพธ์: 2025-04-03ลบเดือน
SQL
SELECT DATE_SUB('2025-04-10', INTERVAL 2 MONTH) AS result;
-- ผลลัพธ์: 2025-02-10ลบเวลา
SQL
SELECT DATE_SUB('2025-04-10 15:30:00', INTERVAL 2 HOUR) AS result;
-- ผลลัพธ์: 2025-04-10 13:30:00ลบจากวันที่ปัจจุบัน
SQL
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS last_30_days;ตัวอย่างการประยุกต์ใช้งาน
แสดงรายการสั่งซื้อใน 7 วันที่ผ่านมา
SQL
SELECT *
FROM orders
WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);หาวันเริ่มต้นของสมาชิกย้อนหลัง 1 ปี
SQL
SELECT member_id, join_date,
DATE_SUB(join_date, INTERVAL 1 YEAR) AS reference_date
FROM members;