MySQL에서 지정된 날짜 값으로부터 월(Month)과 일(Day) 정보를 추출하는 작업은 데이터 처리 과정에서 매우 자주 사용됩니다. 이를 구현하는 방법은 크게 두 가지가 있으며, 각각의 방법과 예제를 살펴보겠습니다.
방법 1: EXTRACT() 함수 활용
EXTRACT() 함수는 MySQL의 TIMESTAMP 또는 DATE 값에서 원하는 특정 부분을 추출할 수 있는 강력한 함수입니다. 함수의 인자로 추출하고자 하는 단위(예: MONTH, DAY)와 대상 날짜를 함께 전달하면 됩니다. 다음은 주어진 날짜 '2017-10-22'에서 월과 일을 각각 추출하는 예제입니다.
mysql> Select EXTRACT(Month from '2017-10-22') AS 'MONTH';
+-------+
| MONTH |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)
mysql> Select EXTRACT(day from '2017-10-22') AS 'DAY';
+------+
| DAY |
+------+
| 22 |
+------+
1 row in set (0.00 sec)
위 쿼리 결과에서 확인할 수 있듯이, 첫 번째 쿼리는 월에 해당하는 10을 반환하고, 두 번째 쿼리는 일에 해당하는 22를 반환합니다.
방법 2: MONTH() 및 DAY() 함수 활용
두 번째 방법은 EXTRACT() 함수에 단위를 인자로 전달하는 대신, MONTH() 함수와 DAY() 함수를 직접 사용하는 것입니다. 이 방식은 코드가 더 간결하고 직관적이라는 장점이 있습니다. 사용 방법은 다음과 같습니다.
mysql> Select DAY('2017-10-22') AS 'DAY';
+------+
| DAY |
+------+
| 22 |
+------+
1 row in set (0.00 sec)
mysql> Select MONTH('2017-10-22') AS 'MONTH';
+-------+
| MONTH |
+-------+
| 10 |
+-------+
1 row in set (0.00 sec)어떤 방법을 선택해야 할까?
두 방법 모두 동일한 결과를 반환하지만, 상황에 따라 적합한 선택이 달라질 수 있습니다. YEAR(), QUARTER() 등 다양한 단위를 유연하게 처리해야 하는 경우에는 EXTRACT() 함수가 더 유용합니다. 반면, 월이나 일만 단순히 추출하는 경우라면 MONTH()나 DAY() 함수를 사용하는 것이 코드 가독성 면에서 더 좋습니다.