MySQL ไม่มีฟังก์ชันมาตรฐานสำหรับ "สัปดาห์ของเดือน" ต้องคำนวณด้วยสูตรเอง
สูตรคำนวณ
SELECT WEEK(yourDateColumn, 5) - WEEK(DATE_SUB(yourDateColumn, INTERVAL DAYOFMONTH(yourDateColumn) - 1 DAY), 5) + 1 AS week_of_month FROM yourTableName;
หลักการ: หาสัปดาห์ของวันที่ลบด้วย สัปดาห์ของวันแรกของเดือน + 1
ตัวอย่างการใช้งาน
สร้างตาราง:
mysql> create table FirstWeekOfMonth (
-> Id int NOT NULL AUTO_INCREMENT primary key,
-> yourdate date
-> );
Query OK, 0 rows affected (2.50 sec)
เพิ่มข้อมูล:
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-01-18');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-04-19');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-05-20');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-12-31');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-10-05');
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-08-25');
ข้อมูล:
+----+------------+ | Id | yourdate | +----+------------+ | 1 | 2019-01-18 | | 2 | 2019-04-19 | | 3 | 2019-05-20 | | 4 | 2019-12-31 | | 5 | 2019-10-05 | | 6 | 2019-08-25 | +----+------------+
คำนวณสัปดาห์ของเดือน (mode 5 = สัปดาห์เริ่มวันจันทร์):
mysql> SELECT WEEK(yourdate, 5) - WEEK(DATE_SUB(yourdate, INTERVAL DAYOFMONTH(yourdate) - 1 DAY), 5) + 1 as FirstWeekDemo from FirstWeekOfMonth;
ผลลัพธ์:
+---------------+ | FirstWeekDemo | +---------------+ | 3 | | 3 | | 4 | | 6 | | 1 | | 4 | +---------------+
เช่น 2019-01-18 อยู่สัปดาห์ที่ 3 ของเดือนมกราคม