데이터베이스에 저장된 UNIX 타임스탬프는 숫자 값만으로는 직관적으로 이해하기 어렵습니다. MySQL에서는 FROM_UNIXTIME() 함수를 사용하면 이러한 타임스탬프를 손쉽게 사람이 읽을 수 있는 날짜·시간 형식으로 변환할 수 있습니다.
1. 예제 테이블 생성하기
먼저 변환 실습에 사용할 테이블을 생성합니다.
mysql> create table timeConversionDemo
-> (
-> dateTimeConversion bigint
-> );
Query OK, 0 rows affected (0.45 sec)
테이블이 정상적으로 생성되었습니다. 컬럼은 bigint 타입으로 선언하여 큰 숫자 값의 타임스탬프도 문제없이 저장할 수 있도록 했습니다.
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 UNIX 타임스탬프 값을 여러 개 삽입합니다.
mysql> insert into timeConversionDemo values(1554316200);
Query OK, 1 row affected (0.14 sec)
mysql> insert into timeConversionDemo values(1546194600);
Query OK, 1 row affected (0.22 sec)
mysql> insert into timeConversionDemo values(1511548200);
Query OK, 1 row affected (0.21 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from timeConversionDemo;
실행 결과는 다음과 같습니다.
+--------------------+
| dateTimeConversion |
+--------------------+
| 1554316200 |
| 1546194600 |
| 1511548200 |
+--------------------+
3 rows in set (0.00 sec)
현재는 숫자로만 된 타임스탬프가 출력되어 어떤 날짜를 의미하는지 한눈에 파악하기 어렵습니다.
4. FROM_UNIXTIME()으로 날짜 형식 변환하기
이제 FROM_UNIXTIME() 함수를 사용해 타임스탬프를 '일-월-년' 형식으로 변환해 보겠습니다.
mysql> select FROM_UNIXTIME(dateTimeConversion,'%d-%m-%Y') AS Conversion from timeConversionDemo;
실행 결과:
+------------+
| Conversion |
+------------+
| 04-04-2019 |
| 31-12-2018 |
| 25-11-2017 |
+------------+
3 rows in set (0.00 sec)
숫자였던 값들이 '2019년 4월 4일', '2018년 12월 31일', '2017년 11월 25일'과 같은 의미 있는 날짜로 변환된 것을 확인할 수 있습니다.
5. MySQL 기본 날짜 형식('년-월-일')으로 변환하기
만약 MySQL에서 일반적으로 사용되는 'YYYY-MM-DD' 형식으로 변환하고 싶다면 포맷 문자열만 변경하면 됩니다.
mysql> select FROM_UNIXTIME(dateTimeConversion,'%Y-%m-%d') AS Conversion from timeConversionDemo;
실행 결과:
+------------+
| Conversion |
+------------+
| 2019-04-04 |
| 2018-12-31 |
| 2017-11-25 |
+------------+
3 rows in set (0.00 sec)
참고: 자주 사용되는 포맷 지정자
FROM_UNIXTIME() 함수의 두 번째 인자에는 다양한 포맷 지정자를 조합해 사용할 수 있습니다.
- %Y : 4자리 연도 (예: 2024)
- %m : 2자리 월 (01~12)
- %d : 2자리 일 (01~31)
- %H : 24시간제 시간 (00~23)
- %i : 분 (00~59)
- %s : 초 (00~59)
예를 들어 날짜와 시간을 함께 표시하고 싶다면 아래와 같이 작성할 수 있습니다.
mysql> select FROM_UNIXTIME(dateTimeConversion,'%Y-%m-%d %H:%i:%s') AS Conversion from timeConversionDemo;
이처럼 FROM_UNIXTIME() 함수 하나만 활용하면 별도의 애플리케이션 로직 없이도 쿼리 단계에서 UNIX 타임스탬프를 원하는 날짜·시간 형식으로 간편하게 변환할 수 있습니다.