MySQL에서 날짜 조건을 활용해 데이터를 조회하려면 SELECT DATE 구문을 정확히 알아야 합니다. 이 글에서는 SELECT DATE 기본 구조부터 WHERE 절과 함께 사용하는 방법까지 예제를 통해 쉽게 정리해 드립니다.
샘플 데이터 테이블
+-----+-------------+
| id | registTime |
+-----+-------------+
| 1 | 2024-11-01 |
| 2 | 2024-12-15 |
| 3 | 2025-01-10 |
| 4 | 2025-02-20 |
| 5 | 2025-03-05 |
| 6 | 2025-04-01 |
| 7 | 2025-04-25 |
| 8 | 2025-05-10 |
+-----+-------------+
MySQL SELECT 날짜 조건 조회 방법
1. 특정 날짜 조회
특정 날짜와 일치하는 조건의 데이터를 조회할 수 있습니다.
-- 2025년 3월 5일에 입력된 데이터를 조회
SELECT *
FROM sample
WHERE registTime = '2025-03-05';
결과
+-----+-------------+
| id | registTime |
+-----+-------------+
| 5 | 2025-03-05 |
+-----+-------------+
2. 특정 날짜 이전 또는 이후 조회
지정한 날짜보다 과거 또는 미래의 데이터를 조회할 수 있습니다. 이때 비교 연산자(관계 연산자)를 사용하여 전, 후 일자를 선택할 수 있습니다.
- 날짜는 직접 입력 또는 MySQL 제공 함수를 통해 지정할 수 있습니다.
⊙ 과거 일자 데이터 조회
-- 직접 입력 2025년 3월 5일 이전 데이터 조회
SELECT *
FROM sample
WHERE registTime < '2025-03-05';
-- 현재 날짜 기준 60일 전
SELECT *
FROM sample
WHERE registTime < DATE_ADD(NOW(), INTERVAL -60 DAY);
결과
+-----+-------------+
| id | registTime |
+-----+-------------+
| 1 | 2024-11-01 |
| 2 | 2024-12-15 |
| 3 | 2025-01-10 |
| 4 | 2025-02-20 |
+-----+-------------+
⊙ 미래 일자 데이터 조회
-- 직접 입력 2025년 3월 5일 이후 데이터 조회
SELECT *
FROM sample
WHERE registTime > '2025-03-05';
-- 현재 날짜 기준 60일 후
SELECT *
FROM sample
WHERE registTime > DATE_ADD(NOW(), INTERVAL 60 DAY);
결과
+-----+-------------+
| id | registTime |
+-----+-------------+
| 6 | 2025-04-01 |
| 7 | 2025-04-25 |
| 8 | 2025-05-10 |
+-----+-------------+
3. 특정 기간 범위 조회
조건문에서 BETWEEN 명령어를 사용하여 날짜 범위를 지정하여 데이터를 검색할 수 있습니다. 특정 기간 범위를 포함 또는 제외하실 수 있습니다.
⊙ 특정 기간을 포함한 데이터 조회
-- 2025년 1월 1일부터 2025년 4월 30일까지 범위 조회
SELECT *
FROM sample
WHERE registTime BETWEEN '2025-01-01'
AND '2025-04-30';
결과
+-----+-------------+
| id | registTime |
+-----+-------------+
| 3 | 2025-01-10 |
| 4 | 2025-02-20 |
| 5 | 2025-03-05 |
| 6 | 2025-04-01 |
| 7 | 2025-04-25 |
+-----+-------------+
⊙ 특정 기간을 제외한 데이터 조회
-- 2025년 1월 1일부터 2025년 4월 30일까지 제외
SELECT *
FROM sample
WHERE registTime NOT BETWEEN '2025-01-01'
AND '2025-04-30';
결과
+-----+-------------+
| id | registTime |
+-----+-------------+
| 1 | 2024-11-01 |
| 2 | 2024-12-15 |
| 8 | 2025-05-10 |
+-----+-------------+
📌 주의: DATE(registTime)은 인덱스를 무시하기 때문에, 데이터가 많을 경우 성능 저하가 발생할 수 있습니다.가능하면 WHERE registTime BETWEEN '날짜' AND '날짜' 형태가 더 좋습니다.
4. SELECT DATE vs DATE_FORMAT 차이점
-- SELECT DATE는 날짜만 추출
SELECT DATE(registTime) FROM sample;
-- DATE_FORMAT은 형식을 지정할 수 있음
SELECT DATE_FORMAT(registTime, '%Y-%m-%d') FROM sample;
MySQL에서 SELECT DATE 구문은 날짜 조건을 정확하게 필터링할 때 매우 유용합니다. WHERE 절, BETWEEN 구문, 비교 연산자 등을 활용하면 실무에서 다양한 상황에 유연하게 대응할 수 있습니다. 이 글이 도움이 되셨다면 아래 글도 참고해보세요:
'DataBase > MySQL' 카테고리의 다른 글
MySQL UPDATE 문 조건에 맞는 여러 개의 데이터 변경 방법 (0) | 2024.08.14 |
---|---|
MySQL INSERT 문 사용 방법 정리 (데이터 삽입) (0) | 2024.08.13 |
MySQL TRUNCATE 명령어 (테이블 초기화) (0) | 2022.12.21 |
MySQL DELETE 문 정리 (테이블 데이터 삭제) (0) | 2022.12.21 |
MySQL 일별, 주별, 월별, 특정 기간별 통계 조회 (1) | 2022.12.19 |
댓글