MySQL 타임스탬프를 UNIX 타임스탬프로 변환하기
MySQL에서 날짜·시간 형태의 타임스탬프를 UNIX 타임스탬프(에포크 이후 경과 초 단위의 정수 값)로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 DATETIME 또는 TIMESTAMP 값을 1970년 1월 1일 00:00:00 UTC 기준으로부터 경과한 초(second)로 반환해 줍니다.
기본 문법
SELECT unix_timestamp(yourColumnName) FROM yourTableName;
이제 실제 예제를 통해 변환 과정을 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 TIMESTAMP 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> create table DemoTable( Duetimestamp timestamp ); Query OK, 0 rows affected (2.66 sec)
2단계: 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다. now() 함수로 현재 시간을 넣을 수도 있고, 특정 날짜를 직접 지정할 수도 있습니다.
mysql> insert into DemoTable values(now());
Query OK, 1 row affected (1.53 sec)
mysql> insert into DemoTable values('2016-01-21 12:34:00');
Query OK, 1 row affected (0.73 sec)
mysql> insert into DemoTable values('2018-05-01 02:00:00');
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable values('2017-03-02 01:10:20');
Query OK, 1 row affected (10.19 sec)3단계: 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+---------------------+ | Duetimestamp | +---------------------+ | 2019-08-20 20:48:45 | | 2016-01-21 12:34:00 | | 2018-05-01 02:00:00 | | 2017-03-02 01:10:20 | +---------------------+ 4 rows in set (0.00 sec)
4단계: UNIX_TIMESTAMP()로 변환
이제 MySQL 타임스탬프를 UNIX 타임스탬프로 변환하는 쿼리입니다.
mysql> select unix_timestamp(Duetimestamp) from DemoTable;
변환 결과는 다음과 같습니다.
+------------------------------+ | unix_timestamp(Duetimestamp) | +------------------------------+ | 1566314325 | | 1453359840 | | 1525120200 | | 1488397220 | +------------------------------+ 4 rows in set (0.04 sec)
참고 사항
UNIX_TIMESTAMP() 함수는 인자 없이 호출하면 현재 시각의 UNIX 타임스탬프를 반환하고, 날짜 문자열이나 DATE/DATETIME 컬럼을 인자로 전달하면 해당 시점의 UNIX 타임스탬프를 반환합니다. 반대로 UNIX 타임스탬프를 다시 날짜 형식으로 변환할 때는 FROM_UNIXTIME() 함수를 사용하면 됩니다. 이 두 함수를 함께 활용하면 MySQL에서 날짜 데이터를 자유롭게 변환할 수 있습니다.