MySQL에서 현재 연도를 구하려면 YEAR() 함수와 CURDATE() 함수를 함께 사용하면 됩니다. 이 두 함수를 조합하면 WHERE 절에서 현재 연도와 일치하는 데이터를 손쉽게 조회할 수 있습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1360
-> (
-> JoiningYear int
-> )
-> ;
Query OK, 0 rows affected (0.51 sec)2. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable1360 values(1998); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1360 values(2018); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable1360 values(2016); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1360 values(2019); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1360 values(2017); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable1360 values(2015); Query OK, 1 row affected (0.14 sec)
3. 전체 레코드 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select * from DemoTable1360;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+ | JoiningYear | +-------------+ | 1998 | | 2018 | | 2016 | | 2019 | | 2017 | | 2015 | +-------------+ 6 rows in set (0.00 sec)
4. WHERE 절에서 현재 연도로 필터링하기
다음은 MySQL의 WHERE 절에서 YEAR(CURDATE())를 활용해 현재 연도와 일치하는 레코드만 조회하는 쿼리입니다.
mysql> select * from DemoTable1360 where JoiningYear=year(curdate());
실행 결과는 다음과 같습니다.
+-------------+ | JoiningYear | +-------------+ | 2019 | +-------------+ 1 row in set (0.00 sec)
핵심 정리
CURDATE()는 현재 날짜를 반환하고, YEAR()는 해당 날짜에서 연도 부분만 추출합니다. 따라서 YEAR(CURDATE())는 항상 실행 시점의 현재 연도를 반환하므로, WHERE 절에서 특정 연도 컬럼과 비교할 때 매우 유용하게 사용됩니다.