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

MySQL에서 레코드 생성 시간을 자동으로 저장하는 방법 (DEFAULT CURRENT_TIMESTAMP 활용)

네, MySQL에서는 컬럼에 값을 직접 입력하지 않아도 현재 날짜와 시간이 자동으로 저장되도록 설정할 수 있습니다. 구현 방법은 크게 두 가지가 있습니다.

  • 첫 번째 방법: 테이블을 생성하는 시점에 기본값(DEFAULT)으로 지정하는 방법

  • 두 번째 방법: ALTER 명령문을 사용해 기존 테이블에 컬럼을 추가하며 지정하는 방법

기본 문법

테이블 생성 시 datetime 컬럼의 기본값을 CURRENT_TIMESTAMP로 지정하는 문법은 다음과 같습니다.

CREATE TABLE yourTableName
(
yourDateTimeColumnName datetime default current_timestamp
);

이미 존재하는 테이블이라면 ALTER 명령문을 사용하면 됩니다.

ALTER TABLE yourTableName ADD yourColumnName datetime DEFAULT CURRENT_TIMESTAMP;

첫 번째 방법: 테이블 생성 시 적용하기

테이블을 만들 때 바로 적용하는 예제입니다.

mysql> create table CurrentTimeStampDemo
-> (
-> CreationDate datetime default current_timestamp
-> );
Query OK, 0 rows affected (0.61 sec)

이렇게 설정하면 INSERT 시 'CreationDate' 컬럼에 별도의 값을 전달하지 않아도 MySQL이 자동으로 현재 시간을 저장합니다.

INSERT 명령으로 레코드를 추가해 보겠습니다.

mysql> insert into CurrentTimeStampDemo values();
Query OK, 1 row affected (0.12 sec)

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

mysql> select * from CurrentTimeStampDemo;

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

+---------------------+
| CreationDate |
+---------------------+
| 2019-01-02 15:53:03 |
+---------------------+
1 row in set (0.00 sec)

값을 전달하지 않았음에도 레코드가 삽입된 시점의 날짜와 시간이 자동으로 기록된 것을 확인할 수 있습니다.

두 번째 방법: ALTER 명령으로 컬럼 추가하기

먼저 간단한 테이블을 생성합니다.

mysql> create table Current_TimestampDemo
-> (
-> Id int
-> );
Query OK, 0 rows affected (0.43 sec)

이제 생성 시간을 자동으로 저장하는 컬럼을 ALTER 명령으로 추가합니다.

mysql> ALTER TABLE Current_TimestampDemo
-> ADD CreationDate datetime DEFAULT CURRENT_TIMESTAMP;
Query OK, 0 rows affected (0.53 sec)
Records: 0 Duplicates: 0 Warnings: 0

레코드를 삽입할 때 'CreationDate' 컬럼에 값을 전달하지 않으면, MySQL이 해당 컬럼에 자동으로 현재 날짜와 시간을 저장합니다.

mysql> insert into Current_TimestampDemo(Id) values(1);
Query OK, 1 row affected (0.19 sec)

SELECT 문으로 결과를 확인해 보겠습니다.

mysql> select CreationDate from Current_TimestampDemo;

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

+---------------------+
| CreationDate |
+---------------------+
| 2019-01-02 16:25:12 |
+---------------------+
1 row in set (0.00 sec)

추가 팁: TIMESTAMP 타입 활용하기

datetime 대신 TIMESTAMP 타입을 사용할 수도 있습니다. TIMESTAMP는 2038년까지만 표현 가능하지만, 저장 용량이 작고 타임존 변환이 자동으로 처리된다는 장점이 있습니다. 또한 다음과 같이 ON UPDATE 옵션을 함께 사용하면 레코드가 수정될 때마다 시간을 자동 갱신할 수 있습니다.

ALTER TABLE yourTableName 
ADD UpdatedDate timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

이처럼 DEFAULT CURRENT_TIMESTAMP 옵션을 활용하면 로그 기록, 게시글 작성일 관리 등 생성·수정 시간 추적이 필요한 다양한 상황에서 편리하게 활용할 수 있습니다.