MySQL에서 날짜·시간(DATETIME) 값을 숫자로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 날짜 값을 1970년 1월 1일 00:00:00 UTC를 기준으로 경과한 초 단위의 유닉스 타임스탬프 숫자로 반환합니다.
기본 문법
SELECT UNIX_TIMESTAMP(yourColumnName) as anyVariableName FROM yourTableName;
문법을 제대로 이해하기 위해 실제 테이블을 만들고 예제 데이터를 넣어 확인해 보겠습니다.
1단계: 테이블 생성
먼저 DATETIME 타입의 컬럼을 포함하는 테이블을 생성합니다.
mysql> create table DateTimeToNumberDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> releasedDate datetime,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.46 sec)2단계: 샘플 데이터 삽입
INSERT 명령어로 다양한 형태의 날짜 데이터를 입력합니다. 현재 시각(now()), 오늘 날짜(curdate()), 그리고 특정 날짜 문자열들을 함께 넣어 보겠습니다.
mysql> insert into DateTimeToNumberDemo(releasedDate) values(now());
Query OK, 1 row affected (0.19 sec)
mysql> insert into DateTimeToNumberDemo(releasedDate) values(curdate());
Query OK, 1 row affected (0.24 sec)
mysql> insert into DateTimeToNumberDemo(releasedDate) values('1978-01-19');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DateTimeToNumberDemo(releasedDate) values('2016-09-13');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DateTimeToNumberDemo(releasedDate) values('2017-11-12');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DateTimeToNumberDemo(releasedDate) values('2018-12-09');
Query OK, 1 row affected (0.21 sec)3단계: 저장된 데이터 확인
SELECT 문으로 테이블에 들어간 전체 레코드를 조회합니다.
mysql> select *from DateTimeToNumberDemo;
실행 결과는 다음과 같습니다.
+----+---------------------+ | Id | releasedDate | +----+---------------------+ | 1 | 2019-01-12 21:20:57 | | 2 | 2019-01-12 00:00:00 | | 3 | 1978-01-19 00:00:00 | | 4 | 2016-09-13 00:00:00 | | 5 | 2017-11-12 00:00:00 | | 6 | 2018-12-09 00:00:00 | +----+---------------------+ 6 rows in set (0.00 sec)
4단계: DATETIME을 숫자로 변환
이제 UNIX_TIMESTAMP() 함수를 적용해 releasedDate 컬럼의 값을 숫자로 변환합니다.
mysql> select unix_timestamp(releasedDate) as DateToNumber from DateTimeToNumberDemo;
변환 결과는 아래와 같습니다.
+--------------+ | DateToNumber | +--------------+ | 1547308257 | | 1547231400 | | 253996200 | | 1473705000 | | 1510425000 | | 1544293800 | +--------------+ 6 rows in set (0.00 sec)
정리 및 참고 사항
UNIX_TIMESTAMP() 함수는 DATETIME, DATE 타입 모두 숫자(초 단위 정수)로 손쉽게 변환할 수 있습니다. 시간 정보가 없는 날짜 값은 해당 일자의 자정(00:00:00) 기준으로 계산됩니다.
반대로 숫자(타임스탬프)를 다시 날짜로 되돌리고 싶다면 FROM_UNIXTIME() 함수를 사용하면 됩니다. 예를 들어 SELECT FROM_UNIXTIME(1547308257);을 실행하면 '2019-01-12 21:20:57'이 반환됩니다.
이러한 변환은 날짜 간 차이 계산, 정렬, 인덱싱 최적화 등 다양한 상황에서 유용하게 활용됩니다.