Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 요일에 해당하는 행 선택하기 – DAYOFWEEK() 함수 활용법

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() 함수를 조건으로 사용하면 원하는 요일의 데이터를 손쉽게 필터링할 수 있습니다.