안녕하세요. 똥돼지입니다.
이번에는 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)를 추가하면 일별 데이터 통계를 조회할 수 있다.
'DBMS > MYSQL' 카테고리의 다른 글
[MYSQL] INSERT문 사용법 및 예제 ( 다중 레코드, SELECT문 추가 ) (0) | 2024.07.03 |
---|---|
[MYSQL] 데이터 조회, 삽입, 수정, 삭제(Select, Insert, Update, Delete) (0) | 2024.07.03 |
[MySQL] function 생성 시 관련 오류(log_bin_trust_function_creators) (0) | 2024.07.03 |
[MySQL] 데이터베이스 주석(Comment) 사용 방법 (0) | 2024.07.03 |
[MySQL] 데이터베이스 인덱스(INDEX) 확인, 추가(ADD), 삭제(DROP) 사용법 및 예제 (UNIQUE 포함) (0) | 2024.07.03 |
댓글