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

날짜 값을 기준으로 MySQL 테이블에서 레코드를 검색하는 방법

날짜 값으로 MySQL 레코드 검색하기

MySQL에서는 특정 날짜와 일치하는 레코드를 손쉽게 조회할 수 있습니다. 여기서는 detail_bday라는 테이블에 저장된 생일 데이터를 예로 들어, 날짜 조건으로 레코드를 검색하는 두 가지 방법을 소개하겠습니다.

예제 테이블 데이터

먼저 detail_bday 테이블에 들어 있는 전체 데이터를 확인해 보겠습니다.

mysql> Select * from detail_bday;
+----+---------+------------+
| Sr | Name    | Birth_Date |
+----+---------+------------+
| 1  | Saurabh | 1990-05-12 |
| 2  | Raman   | 1993-06-11 |
| 3  | Gaurav  | 1984-01-17 |
| 4  | Rahul   | 1993-06-11 |
+----+---------+------------+
4 rows in set (0.00 sec)

테이블에는 네 명의 회원 정보가 저장되어 있으며, 그중 Raman과 Rahul은 같은 날짜(1993-06-11)에 태어났습니다. 이제 이 날짜를 기준으로 레코드를 검색해 보겠습니다.

방법 1: WHERE 절에서 날짜 직접 비교

가장 기본적인 방법은 WHERE 절에서 날짜 컬럼과 원하는 날짜 문자열을 직접 비교하는 것입니다.

mysql> Select * from detail_bday Where Birth_Date = '1993-06-11';
+----+-------+------------+
| Sr | Name  | Birth_Date |
+----+-------+------------+
| 2  | Raman | 1993-06-11 |
| 4  | Rahul | 1993-06-11 |
+----+-------+------------+
2 rows in set (0.00 sec)

Birth_Date 컬럼의 값이 '1993-06-11'과 정확히 일치하는 두 개의 레코드가 반환되었습니다.

방법 2: DATE() 함수 활용

두 번째 방법은 MySQL의 DATE() 함수를 사용하는 것입니다. 이 함수는 날짜·시간 값에서 날짜 부분만 추출해 주기 때문에, 컬럼에 시간 정보까지 함께 저장되어 있는 경우에도 날짜만 비교할 수 있다는 장점이 있습니다.

mysql> Select * from detail_bday Where Date(Birth_Date) = '1993-06-11';
+----+-------+------------+
| Sr | Name  | Birth_Date |
+----+-------+------------+
| 2  | Raman | 1993-06-11 |
| 4  | Rahul | 1993-06-11 |
+----+-------+------------+
2 rows in set (0.00 sec)

정리

두 방식 모두 동일한 결과를 반환하지만, 상황에 따라 적합한 방법이 다릅니다. 컬럼이 순수한 DATE 타입이라면 첫 번째 방법처럼 직접 비교하는 것이 간단하고 인덱스 활용에도 유리합니다. 반면 DATETIME 타입처럼 시간 정보가 포함된 컬럼에서 특정 날짜의 모든 레코드를 찾고 싶다면 DATE() 함수를 사용하는 것이 좋습니다. 단, 함수를 컬럼에 적용하면 인덱스를 제대로 활용하지 못할 수 있으므로, 대용량 테이블에서는 범위 조건(예: Birth_Date >= '1993-06-11' AND Birth_Date < '1993-06-12')을 사용하는 것이 성능 면에서 더 효율적입니다.