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

MySQL에서 DATETIME을 정수(INT)로 변환하는 방법 – UNIX_TIMESTAMP() 완벽 가이드

MySQL에서 DATETIME 타입의 값을 정수(Integer)로 변환하려면 UNIX_TIMESTAMP() 함수를 사용하면 됩니다. 이 함수는 날짜/시간 값을 1970년 1월 1일 00:00:00 UTC(유닉스 에포크) 이후 경과한 초 단위의 정수 값으로 반환합니다.

기본 문법

SELECT UNIX_TIMESTAMP(yourDatetimeColumnName) as anyVariableName FROM yourTableName;

문법을 실제로 이해하기 위해 예제 테이블을 하나 만들어 보겠습니다.

1. 테이블 생성

아래 쿼리로 DatetimeToInteger 테이블을 생성합니다.

mysql> create table DatetimeToInteger
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> ArrivalTime datetime,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.94 sec)

2. 데이터 삽입

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 다양한 형태의 날짜 함수(now(), curdate(), date_add())를 함께 활용했습니다.

mysql> insert into DatetimeToInteger(ArrivalTime) values(now());
Query OK, 1 row affected (0.09 sec)
mysql> insert into DatetimeToInteger(ArrivalTime) values(curdate());
Query OK, 1 row affected (0.21 sec)
mysql> insert into DatetimeToInteger(ArrivalTime) values('2017-09-21 13:10:55');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DatetimeToInteger(ArrivalTime) values(date_add(now(),interval 3 year));
Query OK, 1 row affected (0.16 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DatetimeToInteger;

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

+----+---------------------+
| Id | ArrivalTime         |
+----+---------------------+
|  1 | 2019-01-22 15:12:45 |
|  2 | 2019-01-22 00:00:00 |
|  3 | 2017-09-21 13:10:55 |
|  4 | 2022-01-22 15:14:32 |
+----+---------------------+
4 rows in set (0.00 sec)

4. DATETIME을 정수로 변환

이제 UNIX_TIMESTAMP() 함수를 사용해 DATETIME 값을 정수로 변환하는 쿼리입니다.

mysql> select unix_timestamp(ArrivalTime) as DateTimeToIntegerDemo from DatetimeToInteger;

변환 결과는 아래와 같습니다.

+-----------------------+
| DateTimeToIntegerDemo |
+-----------------------+
|            1548150165 |
|            1548095400 |
|            1505979655 |
|            1642844672 |
+-----------------------+
4 rows in set (0.00 sec)

참고 사항

UNIX_TIMESTAMP()가 반환하는 값은 초 단위 유닉스 타임스탬프입니다. 만약 밀리초 단위가 필요하다면 결과에 1000을 곱하거나, MySQL 5.6.4 이상에서는 UNIX_TIMESTAMP() * 1000 방식을 활용할 수 있습니다. 또한 이 값은 서버의 타임존 설정에 따라 달라질 수 있으므로, 여러 지역의 서버에서 동일한 데이터를 다룰 때는 주의가 필요합니다.