본문 바로가기
DBMS/MYSQL

[MYSQL]SELECT문 WHERE 조건에서 날짜(DATE)를 이용한 검색 사용법 및 예제

by 각종정보라구 2024. 7. 3.

안녕하세요. 똥돼지입니다.
이번에는 Mysql에서 Select문 사용 시 조건으로 날짜(DATE)를 사용하여 검색하는 방법에 대하여 작성해보려고 합니다.


Mysql에서 날짜를 이용한 DATE 형식으로 조회가 가능합니다.

MYSQL DATE 타입으로 날짜별, 기간별 조회(검색)

 

1. 특정 날짜 조회

-- 2022년 7월 27일 생성된 데이터 조회
SELECT *
  FROM TEST
 WHERE DATE(create_time) = '2022-07-27';
 
 -- 결과
 +==+=====================+
 |NO|     create_time     |
 +==+=====================+
 | 1| 2022-07-27 09:30:13 |
 | 2| 2022-07-27 14:22:40 |
 +==+=====================+

 

2. 특정 기간 날짜 조회

-- 2022년 7월 20일부터 27일 생성된 데이터 조회 ( 기간으로 조회 )
SELECT *
  FROM TEST
 WHERE DATE(create_time) BETWEEN '2022-07-20'
                             AND '2022-07-27';

-- 결과
 +==+=====================+
 |NO|     create_time     |
 +==+=====================+
 | 1| 2022-07-20 13:12:57 |
 | 2| 2022-07-22 11:30:20 |
 | 3| 2022-07-25 20:00:10 |
 | 4| 2022-07-27 09:30:13 |
 | 5| 2022-07-27 14:22:40 |
 +==+=====================+

※ Mysql에서 기간 검색 시 between~and~를 통하여 날짜 범위를 지정하고, 특정 기간 및 시간 조건에 맞는 데이터를 검색할 수 있다. 특정 기간의 월별/일별 데이터를 조회할 때나, 이전 또는 이후 데이터만 출력하고 싶은 경우에 사용할 수 있다.

3. 월별/일별 데이터 통계 조회

1) DATE_FORMAT(날짜, 형식) 사용 = 지정한 형식으로 날짜를 출력

-- 2022년 1월부터 7월까지 생성된 데이터 COUNT 조회 ( 월별 통계 )
SELECT DATE_FORMAT(create_time, '%Y-%M') MON,
       COUNT(*) CNT
  FROM TEST
 WHERE DATE(create_time) BETWEEN '2022-01-01'
                             AND '2022-07-31'
 GROUP BY MON;

-- 결과
 +=========+=======+
 |  MON    |  CNT  |
 +=========+=======+
 | 2022-01 |    10 |
 | 2022-02 |    45 |
 | 2022-03 |    32 |
 | 2022-04 |    72 |
 | 2022-05 |    84 |
 | 2022-06 |   122 |
 | 2022-07 |    57 |
 +=========+=======+

※ 데이터 표현 방식으로 연도 표현에서 %Y는 4자리 연도(2022)이며, %y는 2자리 연도(22)로 표현이 된다.
'-%d'를 format 형식에 추가하면 일별 데이터 통계를 조회할 수 있다.

2) MID(문자열, 시작 위치, 문자열 개수) 사용 = 지정한 시작 위치를 기준으로 문자열 개수만큼 문자열을 가져옴

-- 2022년 1월부터 7월까지 생성된 데이터 COUNT 조회 ( 월별 통계 )
SELECT MID(create_time, 1, 7) MON,
       COUNT(*) CNT
  FROM TEST
 WHERE DATE(create_time) BETWEEN '2022-01-01'
                             AND '2022-07-31'
 GROUP BY MON;

-- 결과
 +=========+=======+
 |  MON    |  CNT  |
 +=========+=======+
 | 2022-01 |    10 |
 | 2022-02 |    45 |
 | 2022-03 |    32 |
 | 2022-04 |    72 |
 | 2022-05 |    84 |
 | 2022-06 |   122 |
 | 2022-07 |    57 |
 +=========+=======+

※ 문자열 개수를 10개로 지정하면 일별 데이터 통계를 조회할 수 있다.

3) MONTH(date) 사용 = date의 날짜에 해당하는 월을 리턴한다.

-- 2022년 1월부터 7월까지 생성된 데이터 COUNT 조회 ( 월별 통계 )
SELECT CONCAT(YEAR(create_time), '-', MONTH(create_time)) MON,
       COUNT(*) CNT
  FROM TEST
 WHERE DATE(create_time) BETWEEN '2022-01-01'
                             AND '2022-07-31'
 GROUP BY MON;

-- 결과
 +=========+=======+
 |  MON    |  CNT  |
 +=========+=======+
 | 2022-01 |    10 |
 | 2022-02 |    45 |
 | 2022-03 |    32 |
 | 2022-04 |    72 |
 | 2022-05 |    84 |
 | 2022-06 |   122 |
 | 2022-07 |    57 |
 +=========+=======+

※ CONCAT 함수는 쉼표를 기준으로 해당 문자열들을 합치는 함수이다.
DAY(date)를 추가하면 일별 데이터 통계를 조회할 수 있다.

댓글