MySQL에는 월의 주를 가져오는 표준 함수가 없습니다. 다음 구문을 사용해야 합니다 -
SELECT WEEK(yourDateColumnName, 5) - WEEK(DATE_SUB(yourDateColumnName, INTERVAL DAYOFMONTH(yourDateColumnName) - 1 DAY), 5) + 1 AS anyAliasName FROM yourTableName;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> create table FirstWeekOfMonth -> ( -> Id int NOT NULL AUTO_INCREMENT primary key, -> yourdate date -> ); Query OK, 0 rows affected (2.50 sec)
이제 INSERT 명령을 사용하여 테이블에 일부 레코드를 삽입할 수 있습니다. 쿼리는 다음과 같습니다 -
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)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> select *from FirstWeekOfMonth;
다음은 출력입니다 -
+----+------------+ | 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)
다음은 해당 월의 주를 가져오는 쿼리입니다. -
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 | +---------------+ 6 rows in set (0.00 sec)