MySQL에서 TIMESTAMP 데이터 타입은 날짜와 시간을 모두 포함하는 값을 저장할 때 사용됩니다. 이 글에서는 TIMESTAMP 데이터 타입의 기본값 설정 방법과 실제 활용 예제를 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable662(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(100),
UserPostDate datetime
);
Query OK, 0 rows affected (0.50 sec)
2. TIMESTAMP 데이터 타입으로 변경 및 기본값 설정
다음 쿼리를 사용하면 UserPostDate 컬럼을 TIMESTAMP 데이터 타입으로 변경하고, 유효한 기본값(CURRENT_TIMESTAMP)을 설정할 수 있습니다.
mysql> alter table DemoTable662 MODIFY COLUMN UserPostDate TIMESTAMP NOT NULL DEFAULT current_timestamp;
Query OK, 0 rows affected (1.81 sec)
Records: 0 Duplicates: 0 Warnings: 0
3. 테이블 구조 확인하기
변경된 테이블 구조를 다시 한번 확인해 보겠습니다.
mysql> desc DemoTable662;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+-------------------+----------------+
| UserId | int(11) | NO | PRI | NULL | auto_increment |
| UserName | varchar(100) | YES | | NULL | |
| UserPostDate | timestamp | NO | | CURRENT_TIMESTAMP | |
+--------------+--------------+------+-----+-------------------+----------------+
3 rows in set (0.10 sec)
UserPostDate 컬럼의 타입이 timestamp로 변경되고, 기본값이 CURRENT_TIMESTAMP로 설정된 것을 확인할 수 있습니다.
4. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다. UserPostDate 값을 지정하지 않으면 CURRENT_TIMESTAMP가 자동으로 저장됩니다.
mysql> insert into DemoTable662(UserName) values('Chris');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable662(UserName) values('Robert');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable662(UserName,UserPostDate) values('Robert','2018-01-11');
Query OK, 1 row affected (0.27 sec)5. 데이터 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable662;
실행 결과는 다음과 같습니다.
+--------+----------+---------------------+
| UserId | UserName | UserPostDate |
+--------+----------+---------------------+
| 1 | Chris | 2019-07-20 13:06:13 |
| 2 | Robert | 2019-07-20 13:06:18 |
| 3 | Robert | 2018-01-11 00:00:00 |
+--------+----------+---------------------+
3 rows in set (0.00 sec)
결과를 보면 UserName만 지정한 첫 번째와 두 번째 레코드에는 레코드가 생성된 현재 시각이 자동으로 입력된 반면, 세 번째 레코드에는 직접 지정한 날짜 '2018-01-11'이 저장된 것을 확인할 수 있습니다. 이처럼 TIMESTAMP 데이터 타입에 DEFAULT current_timestamp를 설정하면 별도의 날짜·시간 입력 없이도 게시글 작성 시점과 같은 기록 시간이 자동으로 관리되므로, 로그나 게시물 작성 일자를 저장할 때 매우 유용합니다.