UNIX 타임스탬프와 MySQL 타임스탬프란?
MySQL에서 UNIX 타임스탬프(UNIX TIMESTAMP)는 32비트 정수 형태로 저장됩니다. 반면 MySQL 타임스탬프(MySQL TIMESTAMP) 역시 내부적으로는 비슷한 방식으로 저장되지만, 사람이 읽기 쉬운 YYYY-MM-DD HH:MM:SS 형식으로 표현된다는 점이 가장 큰 차이입니다.
즉, 두 타임스탬프 모두 날짜와 시간 정보를 담고 있지만, 하나는 숫자 값으로, 다른 하나는 날짜 문자열 형태로 다뤄진다고 이해하면 됩니다.
UNIX_TIMESTAMP() 함수 예제
날짜 값을 UNIX 타임스탬프(정수)로 변환하려면 UNIX_TIMESTAMP() 함수를 사용합니다.
mysql> Select UNIX_TIMESTAMP('2017-09-25 02:05:45') AS 'UNIXTIMESTAMP VALUE';
+---------------------+
| UNIXTIMESTAMP VALUE |
+---------------------+
| 1506285345 |
+---------------------+
1 row in set (0.00 sec)위 쿼리 결과에서 확인할 수 있듯이, UNIX 타임스탬프 값은 32비트 정수로 저장되며, 그 표현 범위는 MySQL INTEGER 데이터 타입의 범위와 동일합니다.
FROM_UNIXTIME() 함수 예제
반대로 UNIX 타임스탬프를 사람이 읽을 수 있는 날짜 형식으로 변환하려면 FROM_UNIXTIME() 함수를 사용합니다.
mysql> Select FROM_UNIXTIME(1506283345) AS 'MySQLTIMESTAMP VALUE';
+----------------------+
| MySQLTIMESTAMP VALUE |
+----------------------+
| 2017-09-25 01:32:25 |
+----------------------+
1 row in set (0.00 sec)
위 쿼리는 MySQL 타임스탬프 값 또한 내부적으로 32비트 정수로 저장되지만, 읽기 쉬운 날짜·시간 형식으로 출력되며, 그 범위는 MySQL TIMESTAMP 데이터 타입의 범위('1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC)와 같다는 것을 보여줍니다.
두 타임스탬프 비교 요약
| 구분 | UNIX 타임스탬프 | MySQL 타임스탬프 |
|---|---|---|
| 저장 방식 | 32비트 정수 | 32비트 정수 기반 |
| 표현 형식 | 숫자 (예: 1506285345) | YYYY-MM-DD HH:MM:SS |
| 가독성 | 사람이 직접 읽기 어려움 | 사람이 읽기 쉬움 |
| 주요 변환 함수 | UNIX_TIMESTAMP() | FROM_UNIXTIME() |
정리하자면, UNIX 타임스탬프는 시간을 단일 정수 값으로 표현하여 연산이나 비교에 유리하고, MySQL 타임스탬프는 가독성이 뛰어나 화면 출력이나 로그 기록에 적합합니다. 상황에 맞게 UNIX_TIMESTAMP()와 FROM_UNIXTIME() 함수를 활용해 두 형식을 자유롭게 변환하며 사용할 수 있습니다.