MySQL에서 TIMESTAMP 기본값에 current_date() 대신 CURRENT_TIMESTAMP 사용하기
MySQL에서 TIMESTAMP 타입 열의 기본값을 현재 날짜와 시간으로 지정하려면 current_date()가 아닌 CURRENT_TIMESTAMP를 사용해야 합니다. MySQL은 TIMESTAMP 열의 DEFAULT 값으로 CURRENT_TIMESTAMP만 허용하기 때문입니다. 아래 예제를 통해 실제 동작 방식을 확인해 보겠습니다.
1. 테이블 생성
먼저 TIMESTAMP 열의 기본값이 CURRENT_TIMESTAMP로 설정된 테이블을 생성합니다. 다음은 테이블 생성 쿼리입니다.
mysql> create table defaultCurrent_DateDemo
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentAdmissionDate timestamp default CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.55 sec)
2. 레코드 삽입
INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다. 첫 번째 레코드는 학생 이름만 입력하며, 입학 날짜 열에는 기본값인 현재 시간이 자동으로 저장됩니다. 두 번째 레코드는 입학 날짜를 명시적으로 지정하여 삽입합니다.
mysql> insert into defaultCurrent_DateDemo(StudentName) values('Larry');
Query OK, 1 row affected (0.52 sec)
mysql> insert into defaultCurrent_DateDemo(StudentName,StudentAdmissionDate)
values('Chris','2019-01-31');
Query OK, 1 row affected (0.18 sec)3. 결과 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from defaultCurrent_DateDemo;
위 쿼리는 다음과 같은 출력을 생성합니다.
+-----------+-------------+----------------------+
| StudentId | StudentName | StudentAdmissionDate |
+-----------+-------------+----------------------+
| 1 | Larry | 2019-04-02 19:38:19 |
| 2 | Chris | 2019-01-31 00:00:00 |
+-----------+-------------+----------------------+
2 rows in set (0.00 sec)
결과 분석
출력 결과를 보면 'Larry'의 경우 INSERT 문에서 입학 날짜를 지정하지 않았지만, 기본값인 CURRENT_TIMESTAMP 덕분에 레코드가 삽입된 시점의 날짜와 시간(2019-04-02 19:38:19)이 자동으로 저장된 것을 확인할 수 있습니다. 반면 'Chris'는 '2019-01-31'을 명시적으로 지정했기 때문에 해당 날짜가 그대로 저장되었습니다. 이처럼 TIMESTAMP 열의 기본값이 필요한 경우에는 반드시 CURRENT_TIMESTAMP를 사용해야 한다는 점을 기억하세요.