본문 바로가기
📂 데이터베이스/◾ RDBMS

[DB] MySQL에서 유닉스 타임스탬프(Unix Timestamp) 변환하는 방법

by 이 정규 2023. 6. 22.
728x90
반응형

유닉스 타임스탬프(Unix Timestamp)

유닉스 타임스탬프(Unix Timestamp)는 1970년 1월 1일 00:00:00 UTC부터 경과한 시간을 초 단위로 나타낸 정수 값이다. 예를 들어 타임스탬프 값이 0이라면 변환했을 때, 1970년 1월 1일 00:00:00으로 표현된다. 

사용하는 이유

그냥 우리가 평소 사용하는 방식으로 2023-06-22와 같이 사용하지 않는걸까? 시간은 지역별로 다르게 나타날 수 있기 때문이다. 하지만 타임스탬프를 사용하면 정해진 기준인 1970년 1월 1일 0시에서 얼마나 시간이 경과했는지를 나타낸 것이기 때문에 차이가 없을거다. 일관성과 표준성의 가치를 반영했다.

더불어 정수로 표현하기 때문에 시간간의 차이를 계산하기 쉽다. 단순히 뺄셈을 통해서만 시간차를 구할 수 있으니 확실히 더 간편하다고 생각이 든다.

마지막으로 메모리 측면에서도 효율적이다. 일반적으로 사용하는 표현식보다 작은 공간을 차지한다.

기준이 1970년 1월 1일인 이유

유닉스 시스템은 1970년대 초반 개발되어 시간을 표현하고 처리할 수 있는 표준이 필요했다. 그래서 개발자들은 1970년 1월 1일을 새로운 시간 표현의 시작점으로 정했다. 좀 간지난다.

SQL에서 유닉스 타임스탬프 변환 방법

최근 업무를 보던 중에 유닉스 타임스탬프 형태의 데이터를 마주치게 됐다. 어떻게 처리해야 할 줄 몰라서 그냥 그대로 서버에 넣었다가 대시보드에 시각화를 해야하는데 정수로 표현되어 있으니 시간을 시간으로 써먹지를 못했다. 그래서 변환하는 방법을 알아보게 됐다.

생각보다 간단하게 변환이 가능하다. 다른 DBMS에선 어떤 방법으로 쓰는지 모르겠지만, MySQL에서는 아래와 같이 변환이 가능하다.

FROM_UNIXTIME(@timestamp , '%Y-%m-%d %H:%i:%s')

FROM_UNIXTIME 이라는 함수 안에서 첫번째 인자로 변환할 대상, 두번째 인자로 변환 형태를 설정해주면 된다. 개인적으로 종종 날짜 데이터를 사용할 것 같아서 자주 사용하게 될 함수라는 생각이 들었다. 그럼 이만!

728x90
반응형

댓글