MySQL에서 특정 연도에 해당하는 시작 날짜(StartDate)와 종료 날짜(EndDate)를 조회하려면 YEAR() 함수를 사용하면 됩니다. 이 함수는 DATE 타입의 값에서 연도만 추출해 주기 때문에, 특정 연도 조건으로 데이터를 필터링할 때 매우 유용합니다.
1. 테이블 생성하기
먼저 시작일과 종료일을 저장할 테이블을 생성합니다.
mysql> create table DemoTable1843 ( StartDate date, EndDate date ); Query OK, 0 rows affected (0.00 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable1843 values('2019-01-21','2019-10-12');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1843 values('2018-10-12','2018-12-31');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1843 values('2016-04-01','2017-05-02');
Query OK, 1 row affected (0.00 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select * from DemoTable1843;
실행 결과는 다음과 같습니다.
+------------+------------+ | StartDate | EndDate | +------------+------------+ | 2019-01-21 | 2019-10-12 | | 2018-10-12 | 2018-12-31 | | 2016-04-01 | 2017-05-02 | +------------+------------+ 3 rows in set (0.00 sec)
4. 특정 연도로 조회하는 쿼리
이제 YEAR() 함수를 활용해 선택한 연도(예: 2018년)에 해당하는 시작일과 종료일을 조회하는 쿼리입니다. WHERE 절에서 StartDate 또는 EndDate의 연도가 2018인 레코드를 모두 가져오도록 OR 조건을 사용했습니다.
mysql> select * from DemoTable1843 where year(StartDate)='2018' or year(EndDate)='2018';
실행 결과는 다음과 같습니다.
+------------+------------+ | StartDate | EndDate | +------------+------------+ | 2018-10-12 | 2018-12-31 | +------------+------------+ 1 row in set (0.00 sec)
정리
YEAR() 함수는 날짜 값에서 연도 부분만 추출하므로, 위 예제처럼 WHERE 절에서 특정 연도 조건을 걸 때 간편하게 사용할 수 있습니다. 만약 기간이 여러 해에 걸쳐 있는 데이터를 다룬다면, BETWEEN 연산자나 DATE_FORMAT() 함수를 함께 활용하면 더욱 유연한 조회가 가능합니다.