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

MySQL에서 날짜로부터 연도 추출하기: YEAR() 함수 활용법

MySQL에서 날짜 형식의 데이터로부터 연도만 추출하고 싶다면, 내장 함수인 YEAR() 함수를 사용하면 됩니다. 이 함수는 DATE 타입뿐만 아니라 다양한 방식으로 응용할 수 있어 매우 유용합니다.

1. 기본 사용법: YEAR() 함수

가장 간단한 방법은 YEAR() 함수에 현재 날짜를 반환하는 CURDATE() 함수를 전달하는 것입니다.

mysql> SELECT YEAR(curdate()) as OnlyYearFromCurrentDate;

실행 결과는 다음과 같습니다.

+-------------------------+
| OnlyYearFromCurrentDate |
+-------------------------+
| 2018                    |
+-------------------------+
1 row in set (0.00 sec)

DATE(NOW()) 함수 활용하기

같은 결과를 얻는 또 다른 방법으로, NOW() 함수의 결과에 DATE() 함수를 적용한 뒤 연도를 추출할 수도 있습니다.

mysql> SELECT YEAR(date(now())) as OnlyYearFromCurrentDate;

실행 결과는 동일하게 현재 연도를 반환합니다.

+-------------------------+
| OnlyYearFromCurrentDate |
+-------------------------+
| 2018                    |
+-------------------------+
1 row in set (0.00 sec)

2. VARCHAR 컬럼에서 연도 추출하기

흥미로운 점은 날짜가 아닌 VARCHAR(문자열) 타입의 컬럼에서도 연도를 추출할 수 있다는 것입니다. 이 경우 STR_TO_DATE() 함수를 함께 사용해야 합니다.

먼저 실습용 테이블을 생성해 보겠습니다.

mysql> create table ExtractYearDemo
   -> (
   -> YourDueTime varchar(200)
   -> );
Query OK, 0 rows affected (1.15 sec)

INSERT 명령어를 사용하여 테이블에 데이터를 삽입합니다.

mysql> insert into ExtractYearDemo values('27-10-2011');
Query OK, 1 row affected (0.16 sec)

mysql> insert into ExtractYearDemo values('28-11-2012');
Query OK, 1 row affected (0.15 sec)

mysql> insert into ExtractYearDemo values('29-12-2018');
Query OK, 1 row affected (0.14 sec)

mysql> insert into ExtractYearDemo values('01-01-2019');
Query OK, 1 row affected (0.15 sec)

SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from ExtractYearDemo;

실행 결과는 다음과 같습니다.

+-------------+
| YourDueTime |
+-------------+
| 27-10-2011  |
| 28-11-2012  |
| 29-12-2018  |
| 01-01-2019  |
+-------------+
4 rows in set (0.00 sec)

STR_TO_DATE()와 YEAR() 조합하기

VARCHAR 타입 컬럼에서 연도를 추출하려면, 먼저 STR_TO_DATE() 함수로 문자열을 날짜 형식으로 변환한 후 YEAR() 함수를 적용합니다. 여기서 중요한 것은 문자열의 실제 날짜 형식에 맞게 포맷 지정자(%d-%m-%Y)를 설정하는 것입니다.

mysql> select YEAR(STR_TO_DATE(yourDueTime, "%d-%m-%Y")) As OnlyYearFromDate from ExtractYearDemo;

실행 결과, 각 문자열에서 연도가 정상적으로 추출된 것을 확인할 수 있습니다.

+------------------+
| OnlyYearFromDate |
+------------------+
|             2011 |
|             2012 |
|             2018 |
|             2019 |
+------------------+
4 rows in set (0.00 sec)

정리

  • DATETIME/DATE 타입: YEAR(컬럼명) 또는 YEAR(CURDATE())로 바로 연도 추출 가능
  • VARCHAR 타입: STR_TO_DATE()로 먼저 날짜 변환 후 YEAR() 적용
  • 포맷 지정자는 데이터 형식에 맞춰 설정 (%d: 일, %m: 월, %Y: 4자리 연도)

이처럼 MySQL의 YEAR() 함수는 단독으로도, 다른 함수와 조합해서도 손쉽게 연도를 추출할 수 있는 강력한 도구입니다.