MySQL에서 날짜와 시간을 자동으로 기록하는 컬럼이 필요하다면 TIMESTAMP 데이터 타입을 활용할 수 있습니다. 특히 DEFAULT CURRENT_TIMESTAMP 옵션과 함께 사용하면, 별도로 값을 입력하지 않아도 레코드가 저장되는 시점의 현재 시간이 자동으로 들어가므로 매우 편리합니다.
TIMESTAMP 필드가 있는 테이블 만들기
먼저 TIMESTAMP 타입의 컬럼 두 개(start_date, end_date)를 가진 테이블을 생성해 보겠습니다.
mysql> create table demo50 -> ( -> id int not null auto_increment primary key, -> start_date timestamp default current_timestamp not null, -> end_date timestamp default current_timestamp not null -> ); Query OK, 0 rows affected (1.35 sec)
위 예제에서 각 컬럼의 역할은 다음과 같습니다.
- id: 자동 증가(AUTO_INCREMENT)되는 기본 키
- start_date: 기본값이 현재 시간(CURRENT_TIMESTAMP)인 TIMESTAMP 컬럼
- end_date: 역시 현재 시간이 기본값으로 설정된 TIMESTAMP 컬럼
데이터 삽입하기
이제 INSERT 문을 사용해 몇 개의 레코드를 테이블에 추가해 보겠습니다. TIMESTAMP 컬럼에 값을 지정하지 않으면 기본값인 현재 시간이 자동으로 저장됩니다.
mysql> insert into demo50 values();
Query OK, 1 row affected (0.15 sec)
mysql> insert into demo50(end_date) values('2020-12-21');
Query OK, 1 row affected (0.07 sec)
mysql> insert into demo50(start_date) values('2020-01-01');
Query OK, 1 row affected (0.14 sec)- 첫 번째 쿼리: 아무 값도 지정하지 않았으므로 start_date와 end_date 모두 현재 시간이 들어갑니다.
- 두 번째 쿼리: end_date에만 '2020-12-21'을 지정했고, start_date는 현재 시간으로 자동 입력됩니다.
- 세 번째 쿼리: 반대로 start_date에만 '2020-01-01'을 지정했고, end_date는 현재 시간이 저장됩니다.
결과 확인하기
SELECT 문으로 저장된 데이터를 조회해 보겠습니다.
mysql> select * from demo50;
실행 결과는 다음과 같습니다.
+----+---------------------+---------------------+ | id | start_date | end_date | +----+---------------------+---------------------+ | 1 | 2020-11-04 20:54:31 | 2020-11-04 20:54:31 | | 2 | 2020-11-04 20:54:53 | 2020-12-21 00:00:00 | | 3 | 2020-01-01 00:00:00 | 2020-11-04 20:55:04 | +----+---------------------+---------------------+ 3 rows in set (0.00 sec)
정리
이처럼 MySQL에서는 TIMESTAMP 타입에 DEFAULT CURRENT_TIMESTAMP를 설정함으로써, 값이 명시적으로 주어지지 않은 경우 현재 시각이 자동으로 기록되도록 구성할 수 있습니다. 로그 기록, 생성 일자·수정 일자 추적 등 시간 정보를 다루는 테이블 설계에 널리 활용되는 패턴이니 꼭 익혀 두시기 바랍니다.