MySQL에서 저장된 유닉스 타임스탬프(Unix Timestamp)를 사람이 읽기 쉬운 날짜 문자열 형태로 조회하려면 FROM_UNIXTIME() 함수를 사용하면 됩니다. 이 함수는 숫자로 된 타임스탬프를 지정한 형식의 날짜·시간 문자열로 변환해 줍니다.
기본 문법
SELECT FROM_UNIXTIME(yourColumnName, '%Y-%m-%d %H:%i:%s') FROM yourTableName;
여기서 %Y-%m-%d %H:%i:%s는 각각 연도, 월, 일, 시, 분, 초를 의미하는 형식 지정자입니다. 원하는 출력 형식에 맞게 자유롭게 조합할 수 있습니다.
예제 테이블 생성
문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> CREATE TABLE select_timestampDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ArrivalDateTime int
-> );
Query OK, 0 rows affected (0.62 sec)데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO select_timestampDemo(ArrivalDateTime) VALUES(1546499730); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO select_timestampDemo(ArrivalDateTime) VALUES(1546210820); Query OK, 1 row affected (0.23 sec) mysql> INSERT INTO select_timestampDemo(ArrivalDateTime) VALUES(1496363157); Query OK, 1 row affected (0.29 sec)
저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM select_timestampDemo;
실행 결과는 다음과 같습니다.
+----+-----------------+ | Id | ArrivalDateTime | +----+-----------------+ | 1 | 1546499730 | | 2 | 1546210820 | | 3 | 1496363157 | +----+-----------------+ 3 rows in set (0.00 sec)
현재 ArrivalDateTime 컬럼에는 정수형 타임스탬프 값만 저장되어 있어 날짜를 직관적으로 파악하기 어렵습니다.
타임스탬프를 날짜 문자열로 변환하여 조회
이제 FROM_UNIXTIME() 함수를 적용해 타임스탬프를 날짜 문자열로 변환해 보겠습니다.
mysql> SELECT FROM_UNIXTIME(ArrivalDateTime, '%Y-%m-%d %H:%i:%s') FROM select_timestampDemo;
실행 결과는 다음과 같습니다.
+-----------------------------------------------------+ | FROM_UNIXTIME(ArrivalDateTime, '%Y-%m-%d %H:%i:%s') | +-----------------------------------------------------+ | 2019-01-03 12:45:30 | | 2018-12-31 04:30:20 | | 2017-06-02 05:55:57 | +-----------------------------------------------------+ 3 rows in set (0.00 sec)
참고 사항
FROM_UNIXTIME() 함수에 두 번째 인자를 생략하면 MySQL 시스템 변수 datetime_format에 설정된 기본 형식으로 반환됩니다. 또한 이 함수는 세션의 time_zone 설정을 기준으로 현지 시간대에 맞춰 변환하므로, 서버와 클라이언트의 시간대가 다를 경우 결과가 달라질 수 있다는 점에 유의해야 합니다. 반대로 날짜를 타임스탬프로 변환할 때는 UNIX_TIMESTAMP() 함수를 사용하면 됩니다.