Ý tưởng
Xác định ngày trong tháng thuộc tuần thứ mấy: ngày 1-7 là tuần 1, 8-14 là tuần 2, 15-21 là tuần 3, 22-28 là tuần 4, còn lại là tuần 5. Sử dụng hàm DAY() và câu lệnh CASE.
1. Tạo bảng
mysql> create table DemoTable (
AdmissionDate date
);
Query OK, 0 rows affected (0.63 sec)
2. Chèn dữ liệu
mysql> insert into DemoTable values('2019-09-12');
mysql> insert into DemoTable values('2019-09-06');
mysql> insert into DemoTable values('2019-09-26');
mysql> insert into DemoTable values('2019-09-30');
3. Xem dữ liệu
mysql> select * from DemoTable;
+---------------+ | AdmissionDate | +---------------+ | 2019-09-12 | | 2019-09-06 | | 2019-09-26 | | 2019-09-30 | +---------------+ 4 rows in set (0.00 sec)
4. Truy vấn xác định tuần trong tháng
mysql> select
CASE
WHEN DAY(AdmissionDate) BETWEEN 1 AND 7 THEN 1
WHEN DAY(AdmissionDate) BETWEEN 8 AND 14 THEN 2
WHEN DAY(AdmissionDate) BETWEEN 15 AND 21 THEN 3
WHEN DAY(AdmissionDate) BETWEEN 22 AND 28 THEN 4
ELSE 5
END as NthWeekDayOfMonth
from DemoTable;
Kết quả:
+-------------------+ | NthWeekDayOfMonth | +-------------------+ | 2 | | 1 | | 4 | | 5 | +-------------------+ 4 rows in set (0.01 sec)
Giải thích: Ngày 12 → tuần 2, ngày 6 → tuần 1, ngày 26 → tuần 4, ngày 30 → tuần 5.