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

ฟังก์ชัน YEARWEEK() ใช้เพื่อคืนค่าปีและหมายเลขสัปดาห์ (week number) รวมกันในรูปแบบ YYYYWW จากวันที่ที่ระบุ เช่น 202425 (ปี 2024 สัปดาห์ที่ 25) เหมาะสำหรับการจัดกลุ่มข้อมูลรายสัปดาห์แบบไม่ซ้ำข้ามปี ใช้ได้ทั้งกับ DATE, DATETIME, และ TIMESTAMP

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

YEARWEEK(date [, mode])
  • date คือวันที่ เช่น '2024-06-15', NOW(), หรือคอลัมน์ที่เป็นวันที่
  • mode (optional) คือตัวเลือกการกำหนดรูปแบบของสัปดาห์ (ค่า 0–7 เหมือน WEEK(); default คือ 0)

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 อย่างเป็นทางการ

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

สมมติว่าเรามีข้อมูลในตาราง invoices ดังนี้

invoice_id customer_name invoice_date amount
201Somchai2024-01-021500.00
202Alice2024-01-052200.00
203John2024-03-151800.00
204Sara2024-03-182400.00
205Jane2025-01-031950.00

ดึงปี+สัปดาห์จากวันที่ใน invoice_date

SQL
SELECT invoice_id, invoice_date,
       YEARWEEK(invoice_date) AS year_week
FROM invoices;

สรุปยอดขายแยกตามปี+สัปดาห์

SQL
SELECT YEARWEEK(invoice_date) AS year_week,
       SUM(amount) AS weekly_total
FROM invoices
GROUP BY year_week
ORDER BY year_week;
แชร์เรื่องนี้