MySQL DATETIME을 초 단위로 변환하는 방법
MySQL에서 DATETIME 타입의 값을 총 초 단위로 변환해야 하는 경우가 종종 있습니다. 예를 들어, 시간 차이를 계산하거나 날짜 데이터를 정수 형태로 저장·비교할 때 유용합니다. 이럴 때 UNIX_TIMESTAMP() 함수를 사용하면 간단하게 해결할 수 있습니다.
UNIX_TIMESTAMP() 함수는 주어진 DATETIME 값을 1970년 1월 1일 00:00:00 UTC(유닉스 에포크)부터 경과한 시간을 초 단위의 정수로 반환합니다.
1. 특정 DATETIME 값을 초로 변환하기
mysql> Select UNIX_TIMESTAMP('2017-05-15 04:05:30') AS 'NUMBER OF SECONDS';
+-------------------+
| NUMBER OF SECONDS |
+-------------------+
| 1494801330 |
+-------------------+
1 row in set (0.00 sec)위 쿼리는 지정된 DATETIME 값 '2017-05-15 04:05:30'을 총 초 단위 숫자인 1494801330으로 변환하여 반환합니다.
2. 현재 시각(NOW())을 초로 변환하기
mysql> Select UNIX_TIMESTAMP(NOW()) AS 'NUMBER OF SECONDS';
+-------------------+
| NUMBER OF SECONDS |
+-------------------+
| 1509248856 |
+-------------------+
1 row in set (0.00 sec)
위 쿼리처럼 NOW() 함수와 함께 사용하면 쿼리가 실행되는 현재 시각을 기준으로 총 초 단위 값을 얻을 수 있습니다.
3. 테이블에 저장된 DATETIME 컬럼을 초로 변환하기
mysql> Select UNIX_TIMESTAMP(Dateofreg) AS 'NUMBER OF SECONDS' from
testing where StudentName = 'Gaurav';
+-------------------+
| NUMBER OF SECONDS |
+-------------------+
| 1509247113 |
+-------------------+
1 row in set (0.00 sec)
위 쿼리는 'testing' 테이블에서 StudentName 컬럼 값이 'Gaurav'인 행의 Dateofreg(DATETIME) 컬럼에 저장된 값을 초 단위로 변환하여 조회합니다. 이처럼 실제 테이블 데이터에도 손쉽게 적용할 수 있습니다.
정리
UNIX_TIMESTAMP() 함수는 특정 DATETIME 값, 현재 시각(NOW()), 그리고 테이블에 저장된 DATETIME 컬럼 값 모두에 사용할 수 있으며, 결과를 항상 1970년 1월 1일 이후 경과한 총 초(초 단위 정수)로 반환합니다. 반대로 초 단위 값을 다시 DATETIME으로 변환하고 싶다면 FROM_UNIXTIME() 함수를 사용하면 됩니다.