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

ฟังก์ชัน PERIOD_DIFF() ใช้เพื่อคำนวณจำนวนเดือนระหว่างช่วงเวลาสองค่าที่อยู่ในรูปแบบ YYYYMM โดยคืนค่าผลลัพธ์เป็นจำนวนเดือนทั้งหมดระหว่างช่วงเวลา

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

  1. ใช้หาจำนวนเดือนที่ต่างกันระหว่างสองช่วงเวลา
  2. ใช้ประเมินอายุของงวดบัญชี
  3. ใช้วิเคราะห์รอบเวลาการสมัคร / ชำระเงินย้อนหลัง
  4. เหมาะสำหรับระบบที่เก็บเดือนเป็นค่าตัวเลข YYYYMM

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

PERIOD_DIFF(period1, period2)
  • period1 คือช่วงเวลาหมายเลขที่ใหม่กว่า (ปลายทาง) เช่น 202405
  • period2 คือช่วงเวลาหมายเลขเก่ากว่า (ต้นทาง) เช่น 202401
  • ทั้งสองค่าต้องอยู่ในรูปแบบ YYYYMM
  • ค่าที่คืนมาคือ period1 - period2 เป็นจำนวนเดือน

ตัวอย่างการใช้งาน

หาผลต่างของเดือนระหว่าง 202405 และ 202401

SQL
SELECT PERIOD_DIFF(202405, 202401) AS diff_months;
-- ผลลัพธ์: 4

หาจำนวนเดือนระหว่าง 202501 กับ 202312

SQL
SELECT PERIOD_DIFF(202501, 202312) AS diff_months;
-- ผลลัพธ์: 1

ตัวอย่างการประยุกต์ใช้งาน

แสดงข้อมูลลูกค้าที่สมัครเกิน 12 เดือนแล้ว

SQL
SELECT customer_id, join_period,
       PERIOD_DIFF(YEAR(CURDATE()) * 100 + MONTH(CURDATE()), join_period) AS months_passed
FROM customers
WHERE PERIOD_DIFF(YEAR(CURDATE()) * 100 + MONTH(CURDATE()), join_period) > 12;

หมายเหตุ

  • PERIOD_DIFF() คำนวณแบบเดือนต่อเดือนเท่านั้น ไม่สนใจวันในเดือนนั้น
  • ต้องแน่ใจว่า input อยู่ในรูปแบบ YYYYMM ที่ถูกต้อง (เช่น 202413 จะให้ค่าไม่ถูกต้องเพราะเดือนเกิน 12)
  • ผลลัพธ์จะเป็นค่าลบ หาก period1 < period2
แชร์เรื่องนี้