MySQL에서 날짜와 시간(DATETIME)을 Unix 타임스탬프로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 지정한 날짜·시간 값을 1970년 1월 1일 00:00:00 UTC 기준으로 경과한 초 단위의 정수 값으로 반환합니다.
UNIX_TIMESTAMP()로 변환하기
아래 쿼리는 문자열 형태의 날짜를 STR_TO_DATE() 함수로 파싱한 뒤, Unix 타임스탬프로 변환하는 예제입니다.
mysql> SELECT UNIX_TIMESTAMP(STR_TO_DATE('Oct 19 2018 10:00PM', '%M %d %Y %h:%i%p'));
위 쿼리를 실행하면 결과가 날짜 형식이 아닌 숫자 형태로 출력됩니다. 아래 출력값이 바로 Unix 타임스탬프입니다.
+------------------------------------------------------------------------+
| UNIX_TIMESTAMP(STR_TO_DATE('Oct 19 2018 10:00PM', '%M %d %Y %h:%i%p')) |
+------------------------------------------------------------------------+
| 1539966600 |
+------------------------------------------------------------------------+
1 row in set (0.04 sec)
Unix 타임스탬프를 다시 날짜/시간으로 변환하기
반대로 Unix 타임스탬프를 사람이 읽을 수 있는 실제 날짜·시간 형식으로 되돌리려면 FROM_UNIXTIME() 함수를 사용합니다.
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Oct 19 2018 10:00PM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p');
실행 결과는 다음과 같습니다.
+-----------------------------------------------------------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP(STR_TO_DATE('Oct 19 2018 10:00PM', '%M %d %Y %h:%i%p')),'%m-%d-%Y %h:%i:%p') |
+-----------------------------------------------------------------------------------------------------------+
| 10-19-2018 10:00:PM |
+-----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
정리
UNIX_TIMESTAMP()는 날짜·시간을 초 단위 정수로 변환하고, FROM_UNIXTIME()은 그 반대 작업을 수행합니다. 두 함수를 조합하면 다양한 형식의 날짜 문자열을 원하는 출력 포맷으로 자유롭게 변환할 수 있습니다.