MySQL에서 날짜가 특정 요일에 해당하는지 확인하고 싶다면 DAYOFWEEK() 함수를 사용하면 됩니다. 이 함수는 날짜 값을 받아 요일에 해당하는 숫자 인덱스를 반환합니다.
DAYOFWEEK() 함수의 반환값
DAYOFWEEK() 함수는 다음과 같은 값을 반환합니다.
- 1 = 일요일(Sunday)
- 2 = 월요일(Monday)
- 3 = 화요일(Tuesday)
- 4 = 수요일(Wednesday)
- 5 = 목요일(Thursday)
- 6 = 금요일(Friday)
- 7 = 토요일(Saturday)
즉, ODBC 표준에 따라 일요일이 1부터 시작합니다.
예제 테이블 생성
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable785 ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(100), ShoppingDate date ); Query OK, 0 rows affected (0.61 sec)
샘플 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Chris','2019-07-03');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Robert','2019-07-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('David','2019-07-06');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable785(CustomerName,ShoppingDate) values('Carol','2019-07-19');
Query OK, 1 row affected (0.19 sec)전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable785;
위 쿼리는 다음과 같은 결과를 출력합니다.
+------------+--------------+--------------+ | CustomerId | CustomerName | ShoppingDate | +------------+--------------+--------------+ | 1 | Chris | 2019-07-03 | | 2 | Robert | 2019-07-01 | | 3 | David | 2019-07-06 | | 4 | Carol | 2019-07-19 | +------------+--------------+--------------+ 4 rows in set (0.00 sec)
특정 요일에 해당하는 행 조회하기
이제 특정 요일에 해당하는 행만 선택하는 쿼리를 살펴보겠습니다. 아래 예제는 월요일(DAYOFWEEK 값 = 2)에 해당하는 쇼핑 날짜를 가진 고객을 조회합니다.
mysql> select *from DemoTable785 where DAYOFWEEK(ShoppingDate)=2;
실행 결과는 다음과 같습니다.
+------------+--------------+--------------+ | CustomerId | CustomerName | ShoppingDate | +------------+--------------+--------------+ | 2 | Robert | 2019-07-01 | +------------+--------------+--------------+ 1 row in set (0.00 sec)
결과를 보면 2019년 7월 1일은 월요일이므로 Robert의 레코드만 반환된 것을 확인할 수 있습니다. 이처럼 WHERE 절에서 DAYOFWEEK() 함수를 조건으로 사용하면 원하는 요일의 데이터를 손쉽게 필터링할 수 있습니다.