MySQL에서 DATETIME 값에서 월 이름만 얻는 방법
MySQL에서 날짜/시간(datetime) 값에서 연도와 함께 월 이름만 추출하고 싶다면 DATE_FORMAT() 함수를 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT DATE_FORMAT(yourColumnName, '%M %Y') FROM yourTableName;
여기서 %M은 월의 전체 이름(예: October, December)을, %Y는 4자리 연도를 의미합니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable1619
-> (
-> ArrivalTime DATETIME
-> );
Query OK, 0 rows affected (0.45 sec)2. 데이터 삽입하기
INSERT 명령을 사용하여 몇 개의 레코드를 삽입합니다.
mysql> INSERT INTO DemoTable1619 VALUES(NOW());
Query OK, 1 row affected (0.40 sec)
mysql> INSERT INTO DemoTable1619 VALUES(CURDATE());
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1619 VALUES('2019-12-31');
Query OK, 1 row affected (0.17 sec)위 쿼리에서 NOW()는 현재 날짜와 시간을, CURDATE()는 현재 날짜를 반환합니다.
3. 저장된 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM DemoTable1619;
실행 결과는 다음과 같습니다.
+---------------------+ | ArrivalTime | +---------------------+ | 2019-10-20 15:02:12 | | 2019-10-20 00:00:00 | | 2019-12-31 00:00:00 | +---------------------+ 3 rows in set (0.00 sec)
4. DATE_FORMAT()으로 월 이름 변환하기
이제 DATETIME 값을 변환하여 월 이름을 가져오는 실제 쿼리입니다.
mysql> SELECT DATE_FORMAT(ArrivalTime, '%M %Y') FROM DemoTable1619;
실행 결과는 다음과 같습니다.
+----------------------------------+ | DATE_FORMAT(ArrivalTime,'%M %Y') | +----------------------------------+ | October 2019 | | October 2019 | | December 2019 | +----------------------------------+ 3 rows in set (0.00 sec)
참고: 자주 사용하는 DATE_FORMAT 형식 지정자
상황에 따라 다양한 형식 지정자를 조합하여 사용할 수 있습니다.
- %M — 월의 전체 이름 (예: January, December)
- %b — 축약된 월 이름 (예: Jan, Dec)
- %m — 숫자 형태의 월 (01~12)
- %Y — 4자리 연도 (예: 2019)
- %y — 2자리 연도 (예: 19)
예를 들어 'Oct 2019'처럼 축약된 형태가 필요하다면 DATE_FORMAT(ArrivalTime, '%b %Y')를 사용하면 됩니다. 이처럼 DATE_FORMAT() 함수 하나로 원하는 날짜 형식을 손쉽게 가공할 수 있습니다.