Không có hàm tiêu chuẩn nào để lấy tuần trong tháng trong MySQL. Bạn cần sử dụng cú pháp sau -
SELECT WEEK(yourDateColumnName, 5) - WEEK(DATE_SUB(yourDateColumnName, INTERVAL DAYOFMONTH(yourDateColumnName) - 1 DAY), 5) + 1 AS anyAliasName FROM yourTableName;
Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -
mysql> create table FirstWeekOfMonth -> ( -> Id int NOT NULL AUTO_INCREMENT primary key, -> yourdate date -> ); Query OK, 0 rows affected (2.50 sec)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng lệnh INSERT. Truy vấn như sau -
mysql> insert into FirstWeekOfMonth(yourdate) values('2019-01-18'); Query OK, 1 row affected (0.20 sec) mysql> insert into FirstWeekOfMonth(yourdate) values('2019-04-19'); Query OK, 1 row affected (0.19 sec) mysql> insert into FirstWeekOfMonth(yourdate) values('2019-05-20'); Query OK, 1 row affected (0.10 sec) mysql> insert into FirstWeekOfMonth(yourdate) values('2019-12-31'); Query OK, 1 row affected (0.19 sec) mysql> insert into FirstWeekOfMonth(yourdate) values('2019-10-05'); Query OK, 1 row affected (0.12 sec) mysql> insert into FirstWeekOfMonth(yourdate) values('2019-08-25'); Query OK, 1 row affected (0.16 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from FirstWeekOfMonth;
Sau đây là kết quả -
+----+------------+ | 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 | +----+------------+ 6 rows in set (0.00 sec)
Đây là truy vấn để lấy tuần trong tháng -
mysql> SELECT WEEK(yourdate, 5) - -> WEEK(DATE_SUB(yourdate, INTERVAL DAYOFMONTH(yourdate) - 1 DAY), 5) + 1 as FirstWeekDemo from FirstWeekOfMonth;
Sau đây là kết quả -
+---------------+ | FirstWeekDemo | +---------------+ | 3 | | 3 | | 4 | | 6 | | 1 | | 4 | +---------------+ 6 rows in set (0.00 sec)