INSERT 문에서 해당 컬럼에 아무 값도 지정하지 않으면, TIMESTAMP 타입 컬럼에는 현재 날짜와 시간이 자동으로 삽입됩니다. 이는 컬럼 정의 시 DEFAULT CURRENT_TIMESTAMP 옵션이 설정되어 있기 때문입니다.
테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserLoginDate timestamp default current_timestamp
-> );
Query OK, 0 rows affected (0.61 sec)
위 테이블에서 UserLoginDate 컬럼은 TIMESTAMP 타입이며, 기본값으로 CURRENT_TIMESTAMP가 설정되어 있습니다.
빈 값 삽입하기
이제 INSERT 명령어를 사용하여 값을 지정하지 않은 채 레코드를 삽입해 보겠습니다.
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable(UserId) values(null);
Query OK, 1 row affected (0.13 sec)
결과 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------+---------------------+
| UserId | UserLoginDate |
+--------+---------------------+
| 1 | 2019-11-03 12:55:44 |
| 2 | 2019-11-03 12:55:45 |
| 3 | 2019-11-03 12:55:46 |
| 4 | 2019-11-03 12:56:06 |
+--------+---------------------+
4 rows in set (0.00 sec)
결과 분석
출력 결과를 보면, INSERT 문에서 날짜 정보를 전혀 제공하지 않았음에도 불구하고 UserLoginDate 컬럼에 각 레코드가 삽입된 순간의 현재 날짜와 시간이 자동으로 기록된 것을 확인할 수 있습니다.
이처럼 MySQL에서는 TIMESTAMP 컬럼에 DEFAULT CURRENT_TIMESTAMP를 설정해 두면, 별도의 값을 지정하지 않아도 데이터가 삽입되는 시점의 타임스탬프가 자동으로 저장됩니다. 로그인 시간, 생성 일시 등 레코드 생성 시점을 추적해야 하는 경우 매우 유용하게 활용할 수 있습니다.