MySQL에서 레코드가 생성된(삽입된) 시간을 자동으로 저장하려면 DEFAULT CURRENT_TIMESTAMP 옵션을 사용하면 됩니다. 다만 이 방식은 레코드가 삽입되는 시점에만 적용되며, 이후 레코드를 수정해도 해당 값은 변경되지 않는다는 점을 유의해야 합니다.
1. 테이블 생성하기
먼저 TIMESTAMP 타입의 컬럼에 DEFAULT CURRENT_TIMESTAMP를 지정하여 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Arrivaltime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Query OK, 0 rows affected (0.31 sec)2. 레코드 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 삽입해 보겠습니다. Arrivaltime 값을 직접 지정할 수도 있고, 값을 생략하면 현재 시간이 자동으로 저장됩니다.
mysql> insert into DemoTable(Arrivaltime) values('2018-01-31 10:34:56');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Arrivaltime) values('2019-01-31 11:10:12');
Query OK, 1 row affected (0.04 sec)3. 결과 확인하기
SELECT 문을 실행하여 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+---------------------+ | Id | Arrivaltime | +----+---------------------+ | 1 | 2018-01-31 10:34:56 | | 2 | 2019-05-02 12:50:24 | | 3 | 2019-01-31 11:10:12 | +----+---------------------+ 3 rows in set (0.00 sec)
출력 결과를 살펴보면, Id 2번 레코드처럼 Arrivaltime 값을 명시하지 않고 삽입한 경우 CURRENT_TIMESTAMP 기본값에 따라 레코드가 삽입된 당시의 날짜와 시간이 자동으로 저장된 것을 확인할 수 있습니다. 반면 Id 1번과 3번 레코드처럼 직접 값을 지정한 경우에는 지정한 시간이 그대로 저장됩니다. 이처럼 DEFAULT CURRENT_TIMESTAMP를 활용하면 별도의 애플리케이션 로직 없이도 데이터 생성 시각을 손쉽게 기록할 수 있습니다.