MySQL การใช้งานฟังก์ชัน DATE_SUB()

ฟังก์ชัน DATE_SUB() ใช้เพื่อลบช่วงเวลา (INTERVAL) ออกจากค่าที่เป็นวันที่ (DATE, DATETIME, หรือ TIMESTAMP) แล้วคืนผลลัพธ์ออกมาเป็นวันหรือวันเวลาที่ลดลง เหมาะสำหรับการลบวัน เวลา เดือน ปี หรือช่วงเวลาต่าง ๆ ออกจากวันที่ เช่น การหาวันเริ่มต้นย้อนหลัง, วันหมดอายุ, หาวันที่ก่อนกำหนด เป็นต้น

ประโยชน์ของฟังก์ชัน DATE_SUB()

  1. ใช้หาวันที่ย้อนหลัง เช่น 7 วันก่อนหน้า, 3 เดือนที่แล้ว
  2. ใช้กรองข้อมูลย้อนหลัง เช่น คำสั่งซื้อใน 30 วันที่ผ่านมา
  3. เหมาะสำหรับระบบรายงาน, การวิเคราะห์ข้อมูล, แจ้งเตือนหมดอายุ
  4. ใช้คำนวณวันที่อ้างอิง เช่น วันที่เริ่มโปรโมชัน หรือวันครบกำหนด

รูปแบบการใช้งาน

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;
แชร์เรื่องนี้