타임스탬프 값에서 월 번호만 추출하고 싶다면 MySQL의 DATE_FORMAT() 함수를 사용하면 됩니다. 이 함수는 날짜 형식 지정자를 활용해 원하는 부분만 손쉽게 가져올 수 있습니다.
1. 테이블 생성하기
먼저 TIMESTAMP 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> create table DemoTable1999
(
ArrivalDate timestamp
);
Query OK, 0 rows affected (0.66 sec)2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 테이블에 추가합니다.
mysql> insert into DemoTable1999 values('2019-01-01 12:34:00');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1999 values('2019-12-31 10:04:00');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1999 values('2018-10-11 04:04:30');
Query OK, 1 row affected (0.14 sec)3. 저장된 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1999;
위 쿼리는 다음과 같은 결과를 출력합니다.
+---------------------+ | ArrivalDate | +---------------------+ | 2019-01-01 12:34:00 | | 2019-12-31 10:04:00 | | 2018-10-11 04:04:30 | +---------------------+ 3 rows in set (0.00 sec)
4. 월 번호만 반환하는 쿼리
이제 DATE_FORMAT() 함수에 형식 지정자 %m을 적용해 월 번호만 반환하는 쿼리를 작성합니다.
mysql> select date_format(ArrivalDate,'%m') as MonthName from DemoTable1999;
실행 결과는 아래와 같습니다.
+-----------+ | MonthName | +-----------+ | 01 | | 12 | | 10 | +-----------+ 3 rows in set (0.00 sec)
참고: 월 이름이 필요한 경우
월 번호가 아닌 월 이름(예: January, December)을 얻고 싶다면 형식 지정자 %M을 대신 사용하면 됩니다. 또한 MONTH() 함수를 활용하면 01처럼 앞자리 0이 붙지 않은 숫자 형태(1, 12, 10)로 월 번호를 받을 수 있으니 상황에 맞게 선택하세요.