ฟังก์ชัน WEEK() ใช้เพื่อคืนค่าหมายเลขสัปดาห์ (week number) ของปี จากวันในรูปแบบ DATE, DATETIME หรือ TIMESTAMP โดยสามารถปรับรูปแบบสัปดาห์ได้ตามต้องการ เช่น เริ่มต้นวันอาทิตย์, เริ่มต้นวันจันทร์, หรือใช้มาตรฐาน ISO
- ค่าที่ได้อยู่ในช่วง
0 – 53 - สัปดาห์แรกของปีอาจเริ่มตั้งแต่ปลายปีก่อน (ขึ้นกับโหมดที่ใช้)
ประโยชน์ของฟังก์ชัน WEEK()
- ใช้จัดกลุ่มข้อมูลตามสัปดาห์ เช่น รายงานยอดขายรายสัปดาห์
- ใช้ตรวจสอบข้อมูลที่เกิดในสัปดาห์เดียวกัน
- ใช้ในระบบวิเคราะห์แนวโน้มตามสัปดาห์ของปี
รูปแบบการใช้งาน
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;