MySQL에서는 FROM_UNIXTIME() 함수를 사용하면 유닉스 타임스탬프(Unix Timestamp)를 손쉽게 날짜·시간 형식으로 변환할 수 있습니다. 이 글에서는 실제 예제를 통해 정수(int) 타입의 타임스탬프 값을 DATETIME으로 변환하고, 원하는 포맷으로 출력하는 방법까지 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 타임스탬프 값을 저장할 int 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> create table TimestamptoDateDemo -> ( -> YourTimeStamp int(11) -> ); Query OK, 0 rows affected (0.57 sec)
2. 데이터 삽입 및 조회
테이블에 타임스탬프 값을 하나 삽입해 보겠습니다.
mysql> insert into TimestamptoDateDemo values(1389453221); Query OK, 1 row affected (0.23 sec)
저장된 모든 레코드를 조회합니다.
mysql> select * from TimestamptoDateDemo;
실행 결과는 다음과 같습니다.
+---------------+ | YourTimeStamp | +---------------+ | 1389453221 | +---------------+ 1 row in set (0.00 sec)
3. FROM_UNIXTIME()으로 날짜·시간 변환하기
타임스탬프를 날짜·시간으로 변환하는 기본 문법은 다음과 같습니다.
SELECT from_unixtime(컬럼명) FROM 테이블명;
실제 쿼리를 실행해 보겠습니다.
mysql> select from_unixtime(YourTimeStamp) from TimestamptoDateDemo;
변환 결과가 표준 DATETIME 형식으로 출력됩니다.
+------------------------------+ | from_unixtime(YourTimeStamp) | +------------------------------+ | 2018-09-11 20:43:41 | +------------------------------+ 1 row in set (0.04 sec)
4. 원하는 형식으로 포맷 지정하기
FROM_UNIXTIME() 함수의 두 번째 인자에 포맷 문자열을 넣으면, 원하는 스타일로 날짜와 시간을 표시할 수 있습니다.
select from_unixtime(컬럼명, '%Y %D %M %h:%i:%s') from 테이블명;
포맷이 적용된 결과입니다.
+---------------------------------------------------+ | from_unixtime(YourTimeStamp, '%Y %D %M %h:%i:%s') | +---------------------------------------------------+ | 2018 11th September 08:43:41 | +---------------------------------------------------+ 1 row in set (0.03 sec)
자주 사용하는 포맷 기호
%Y: 연도 (예: 2018)%M: 월 이름 (예: September)%D: 서수가 붙은 일 (예: 11th)%h: 시 (12시간제)%i: 분%s: 초
이처럼 MySQL의 FROM_UNIXTIME() 함수를 활용하면 int 타입으로 저장된 타임스탬프 값을 기본 DATETIME 형식뿐 아니라 다양한 커스텀 포맷으로 자유롭게 변환할 수 있습니다.