MySQL에서 'Jan', 'Mar' 같은 월 이름 문자열을 숫자로 변환하려면 str_to_date() 함수와 month() 함수를 함께 사용하면 됩니다.
기본 문법
select month(str_to_date(yourColumnName,'%b')) from yourTableName;
여기서 %b는 축약된 월 이름(Jan, Feb, Mar 등)을 나타내는 형식 지정자입니다.
예제 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
MonthName varchar(100)
);
Query OK, 0 rows affected (0.76 sec)insert 명령으로 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable(MonthName) values('Jan');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(MonthName) values('Mar');
Query OK, 1 row affected (0.13 sec)select 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+-----------+ | Id | MonthName | +----+-----------+ | 1 | Jan | | 2 | Mar | +----+-----------+ 2 rows in set (0.00 sec)
문자열을 월(숫자)로 변환하는 쿼리
다음은 월 이름 문자열을 숫자로 변환하는 쿼리입니다.
mysql> select month(str_to_date(MonthName,'%b')) from DemoTable;
출력 결과
+------------------------------------+ | month(str_to_date(MonthName,'%b')) | +------------------------------------+ | 1 | | 3 | +------------------------------------+ 2 rows in set (0.05 sec)
'Jan'은 1로, 'Mar'은 3으로 정상적으로 변환된 것을 확인할 수 있습니다.
참고: 전체 월 이름인 경우
만약 컬럼에 'January'처럼 전체 월 이름이 저장되어 있다면 형식 지정자를 %M으로 변경하면 됩니다.
mysql> select month(str_to_date(MonthName,'%M')) from DemoTable;
이처럼 str_to_date() 함수로 문자열을 날짜로 파싱한 뒤, month() 함수로 월 값만 추출하는 방식으로 간단하게 변환할 수 있습니다.