MySQL에서 타임스탬프 값을 월로 변환하려면 FROM_UNIXTIME() 함수와 MONTH() 함수를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
SELECT MONTH(FROM_UNIXTIME(yourColumnName)) FROM yourTableName;
FROM_UNIXTIME()은 유닉스 타임스탬프를 날짜·시간 형식으로 변환하고, MONTH()는 그 결과에서 월에 해당하는 숫자(1~12)만 추출합니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable1457
-> (
-> Value BIGINT
-> );
Query OK, 0 rows affected (0.85 sec)타임스탬프 값은 범위가 크기 때문에 BIGINT 타입으로 컬럼을 정의했습니다.
2. 데이터 삽입하기
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO DemoTable1457 VALUES(1570207117); Query OK, 1 row affected (0.07 sec) mysql> INSERT INTO DemoTable1457 VALUES(1548947534); Query OK, 1 row affected (0.16 sec) mysql> INSERT INTO DemoTable1457 VALUES(1575213134); Query OK, 1 row affected (0.13 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable1457;
실행 결과는 다음과 같습니다.
+------------+ | Value | +------------+ | 1570207117 | | 1548947534 | | 1575213134 | +------------+ 3 rows in set (0.00 sec)
4. 타임스탬프를 월로 변환하는 쿼리
이제 FROM_UNIXTIME()과 MONTH()를 조합하여 타임스탬프를 월로 변환해 보겠습니다.
mysql> SELECT MONTH(FROM_UNIXTIME(Value)) FROM DemoTable1457;
실행 결과는 다음과 같습니다.
+-----------------------------+ | MONTH(FROM_UNIXTIME(Value)) | +-----------------------------+ | 10 | | 1 | | 12 | +-----------------------------+ 3 rows in set (0.00 sec)
결과 해석
출력 결과를 보면 각 타임스탬프가 다음과 같은 월로 변환되었습니다.
- 1570207117 → 10월 (2019년 10월 4일)
- 1548947534 → 1월 (2019년 1월 31일)
- 1575213134 → 12월 (2019년 12월 1일)
참고: 월 이름까지 함께 출력하기
월 이름(예: January, October)까지 확인하고 싶다면 MONTHNAME() 함수를 사용할 수 있습니다.
mysql> SELECT MONTHNAME(FROM_UNIXTIME(Value)) FROM DemoTable1457;
또한 AS 키워드를 활용하면 컬럼 별칭을 지정해 결과를 더 읽기 쉽게 만들 수 있습니다.
mysql> SELECT MONTH(FROM_UNIXTIME(Value)) AS MonthValue FROM DemoTable1457;
이처럼 MySQL에서는 FROM_UNIXTIME()과 MONTH() 함수의 조합만으로 유닉스 타임스탬프를 손쉽게 월 단위로 변환할 수 있습니다. 로그 데이터 분석이나 월별 통계 집계 시 매우 유용하게 활용됩니다.