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

ฟังก์ชัน WEEK() ใช้เพื่อคืนค่าหมายเลขสัปดาห์ (week number) ของปี จากวันในรูปแบบ DATE, DATETIME หรือ TIMESTAMP โดยสามารถปรับรูปแบบสัปดาห์ได้ตามต้องการ เช่น เริ่มต้นวันอาทิตย์, เริ่มต้นวันจันทร์, หรือใช้มาตรฐาน ISO

  • ค่าที่ได้อยู่ในช่วง 0 – 53
  • สัปดาห์แรกของปีอาจเริ่มตั้งแต่ปลายปีก่อน (ขึ้นกับโหมดที่ใช้)

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

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

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

WEEK(date [, mode])
  • date คือค่าวันที่ เช่น '2025-04-10' หรือ NOW()
  • mode (optional) คือตัวเลขที่ระบุรูปแบบการนับสัปดาห์ (0–7)

mode ที่ใช้ได้มีดังนี้

Mode วันเริ่มต้นสัปดาห์ นิยามสัปดาห์แรกของปี อิงมาตรฐาน ISO
0 Sunday สัปดาห์ที่มีวันที่ 1 มกราคม อยู่ในนั้น
1 Monday สัปดาห์ที่มีวันที่ 1 มกราคม อยู่ในนั้น
2 Sunday สัปดาห์แรกต้องมีอย่างน้อย 4 วันในปีนั้น
3 Monday สัปดาห์แรกต้องมีอย่างน้อย 4 วันในปีนั้น
4 Sunday ใช้วิธีคำนวณแบบ ISO แต่เริ่มสัปดาห์วันอาทิตย์
5 Monday ใช้วิธีคำนวณแบบ ISO แต่ไม่ตรงตามมาตรฐาน 100%
6 Sunday เหมือน ISO 8601 แต่เริ่มวันอาทิตย์
7 Monday ใช้มาตรฐาน ISO 8601 อย่างเป็นทางการ

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

ดึงหมายเลขสัปดาห์ของวันที่ 10 เมษายน 2025

SQL
SELECT WEEK('2025-04-10') AS week_number;
-- ผลลัพธ์: 15 (ขึ้นอยู่กับโหมด)

ใช้กับวันที่ปัจจุบัน

SQL
SELECT WEEK(NOW()) AS current_week;

ใช้ mode = 1 (เริ่มวันจันทร์)

SQL
SELECT WEEK('2025-04-10', 1) AS week_number;

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

สรุปยอดขายรายสัปดาห์

SQL
SELECT WEEK(order_date, 1) AS week_num,
       SUM(total_amount) AS total_sales
FROM orders
GROUP BY week_num
ORDER BY week_num;

กรองข้อมูลที่อยู่ในสัปดาห์ที่ 15

SQL
SELECT *
FROM events
WHERE WEEK(event_date, 1) = 15;
แชร์เรื่องนี้