MySQL EXTRACT() 함수란?
MySQL에서는 EXTRACT() 함수를 사용하여 테이블에 저장된 날짜(DATE) 또는 날짜시간(DATETIME) 값에서 연도, 월, 일 등 원하는 부분만 손쉽게 추출할 수 있습니다.
아래 예제를 통해 실제 테이블에 EXTRACT() 함수를 적용하는 방법을 단계별로 살펴보겠습니다.
예제 테이블 확인하기
먼저 'testing' 테이블에 어떤 날짜 데이터가 입력되어 있는지 조회해 보겠습니다.
mysql> Select * from testing;
+-------------+---------------------+
| StudentName | Dateofreg |
+-------------+---------------------+
| Ram | 2017-10-28 21:24:24 |
| Shyam | 2017-10-28 21:24:30 |
| Mohan | 2017-10-28 21:24:47 |
| Gaurav | 2017-10-29 08:48:33 |
+-------------+---------------------+
4 rows in set (0.00 sec)
테이블에는 학생 이름과 함께 'Dateofreg'(등록 날짜) 컬럼에 DATETIME 형식의 값이 저장되어 있습니다.
EXTRACT() 함수로 연도(Year) 추출하기
'testing' 테이블의 등록 날짜에서 연도 값을 추출하려면 다음과 같이 쿼리를 작성합니다.
mysql> Select EXTRACT(Year from dateofreg) AS YEAR from testing;
+------+
| YEAR |
+------+
| 2017 |
| 2017 |
| 2017 |
| 2017 |
+------+
4 rows in set (0.00 sec)
모든 레코드의 등록 날짜가 2017년이므로 결과값이 모두 '2017'로 출력된 것을 확인할 수 있습니다.
EXTRACT() 함수로 일(Day) 추출하기
같은 방식으로 일(day) 값을 추출할 수도 있습니다.
mysql> Select EXTRACT(day from dateofreg) AS DAY from testing;
+-----+
| DAY |
+-----+
| 28 |
| 28 |
| 28 |
| 29 |
+-----+
4 rows in set (0.00 sec)
앞 세 개의 레코드는 10월 28일에, 마지막 레코드는 10월 29일에 등록되었기 때문에 각각 28과 29가 반환됩니다.
정리
EXTRACT() 함수는 EXTRACT(단위 FROM 날짜컬럼) 형태로 사용하며, 단위 자리에 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 등을 지정할 수 있습니다. 이를 활용하면 복잡한 문자열 처리 없이도 날짜 데이터에서 필요한 정보만 깔끔하게 가져올 수 있어, 통계 집계나 조건 검색 시 매우 유용합니다.