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

MySQL에서 UNIX_TIMESTAMP의 데이터 타입은 무엇일까?

MySQL에서 UNIX_TIMESTAMP 값을 저장할 때 가장 적합한 데이터 타입은 바로 정수형(Integer)입니다. 일반적으로 다음과 같이 선언합니다.

int(11);

정수형 데이터 타입은 >, <= 같은 조건 비교 연산과 인덱싱에 유용하게 활용됩니다. 또한 MySQL의 UNIX_TIMESTAMP() 함수는 기본적으로 정수를 반환하도록 설계되어 있기 때문에, 저장 공간과 성능 측면에서도 정수형이 가장 효율적인 선택입니다.

DATETIME을 UNIX TIMESTAMP로 변환하면 어떤 값이 나올까?

그렇다면 DATETIME 값을 타임스탬프로 변환했을 때 실제로 어떤 형태의 값이 반환되는지 직접 확인해 보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table UnixTime
-> (
-> DueTime datetime
-> );
Query OK, 0 rows affected (0.55 sec)

2. 레코드 삽입

INSERT 명령을 사용해 날짜 형태의 데이터를 입력합니다.

mysql> insert into UnixTime values(now());
Query OK, 1 row affected (0.15 sec)

mysql> insert into UnixTime values('2010-10-14');
Query OK, 1 row affected (0.15 sec)

mysql> insert into UnixTime values('2020-09-24');
Query OK, 1 row affected (0.15 sec)

3. 전체 레코드 조회

SELECT 명령으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select *from UnixTime;

실행 결과는 다음과 같습니다.

+---------------------+
| DueTime |
+---------------------+
| 2018-12-19 10:07:11 |
| 2010-10-14 00:00:00 |
| 2020-09-24 00:00:00 |
+---------------------+
3 rows in set (0.00 sec)

4. DATETIME을 UNIX TIMESTAMP로 변환

이제 UNIX_TIMESTAMP() 함수를 사용해 DATETIME 값을 타임스탬프로 변환하는 쿼리를 실행해 보겠습니다.

mysql> select unix_timestamp(DueTime) as Output from UnixTime;

결과를 보면 모든 값이 정수 형태로 반환된 것을 확인할 수 있습니다.

+------------+
| Output |
+------------+
| 1545194231 |
| 1286994600 |
| 1600885800 |
+------------+
3 rows in set (0.00 sec)

이처럼 UNIX_TIMESTAMP() 함수의 반환값은 항상 정수이므로, 해당 값을 저장하는 컬럼 역시 INT 타입으로 정의하는 것이 가장 바람직합니다. 이를 통해 조건 검색, 범위 비교, 인덱스 활용 등에서 최상의 성능을 얻을 수 있습니다.