Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 DATETIME을 숫자로 변환하는 방법 – UNIX_TIMESTAMP 함수 완벽 가이드

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'이 반환됩니다.

이러한 변환은 날짜 간 차이 계산, 정렬, 인덱싱 최적화 등 다양한 상황에서 유용하게 활용됩니다.