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

MySQL 날짜 열에 현재 날짜 자동 입력 설정하는 방법

MySQL에서 날짜 열에 현재 날짜와 시간을 자동으로 채우려면 NOW() 함수를 기본값(DEFAULT)으로 지정하면 됩니다. 이후 DATE() 함수를 사용하면 저장된 값에서 날짜 부분만 추출할 수도 있습니다.

기본값 설정 문법

Case 1: DATE 타입에 고정 날짜 기본값 지정

yourDateColumnName date default 'yourDateValue';

Case 2: DATETIME 타입에 현재 날짜·시간 자동 입력

yourDateColumnName datetime default now();

참고: MySQL 5.6.5 이상 버전부터 DATETIME 열에도 NOW() 또는 CURRENT_TIMESTAMP를 기본값으로 사용할 수 있으며, 그 이전 버전에서는 TIMESTAMP 열에만 적용 가능했습니다.

예제 1: NOW()를 기본값으로 사용하기

먼저 LoginDate라는 DATETIME 열에 NOW()를 기본값으로 갖는 테이블을 생성해 보겠습니다.

mysql> create table DefaultCurrentdateDemo
-> (
-> LoginDate datetime default now()
-> );
Query OK, 0 rows affected (0.59 sec)

INSERT 명령으로 레코드를 삽입합니다. 값을 전달하지 않으면 기본값인 현재 날짜와 시간이 자동으로 저장됩니다.

mysql> insert into DefaultCurrentdateDemo values();
Query OK, 1 row affected (0.18 sec)

mysql> insert into DefaultCurrentdateDemo values('2017-11-19');
Query OK, 1 row affected (0.16 sec)

mysql> insert into DefaultCurrentdateDemo values('2018-10-21');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DefaultCurrentdateDemo values();
Query OK, 1 row affected (0.23 sec)

mysql> insert into DefaultCurrentdateDemo values('2020-12-24');
Query OK, 1 row affected (0.12 sec)

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DefaultCurrentdateDemo;

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

+---------------------+
| LoginDate |
+---------------------+
| 2019-01-12 20:33:51 |
| 2017-11-19 00:00:00 |
| 2018-10-21 00:00:00 |
| 2019-01-12 20:34:37 |
| 2020-12-24 00:00:00 |
+---------------------+
5 rows in set (0.00 sec)

결과를 보면 값을 직접 입력하지 않은 첫 번째 행과 네 번째 행에는 쿼리 실행 시점의 현재 날짜와 시간(2019-01-12 20:33:51, 2019-01-12 20:34:37)이 자동으로 저장된 것을 확인할 수 있습니다.

DATETIME 값에서 날짜만 추출하기

시간 정보 없이 날짜 부분만 필요하다면 DATE() 함수를 사용하면 됩니다.

mysql> select date(LoginDate) as OnlyDate from DefaultCurrentdateDemo;

실행 결과:

+------------+
| OnlyDate |
+------------+
| 2019-01-12 |
| 2017-11-19 |
| 2018-10-21 |
| 2019-01-12 |
| 2020-12-24 |
+------------+
5 rows in set (0.00 sec)

예제 2: DATE 열에 고정 날짜 기본값 지정하기

현재 시각 대신 특정 날짜를 기본값으로 설정할 수도 있습니다.

mysql> create table DefaultDate
-> (
-> LoginDate date default '2019-01-12'
-> );
Query OK, 0 rows affected (0.53 sec)

열에 값을 전달하지 않고 INSERT 하면 지정한 기본값이 자동으로 저장됩니다.

mysql> insert into DefaultDate values();
Query OK, 1 row affected (0.13 sec)

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

mysql> select *from DefaultDate;

실행 결과:

+------------+
| LoginDate |
+------------+
| 2019-01-12 |
+------------+
1 row in set (0.00 sec)

마무리 정리

- DATETIME 열에는 DEFAULT NOW()를 지정해 현재 날짜와 시간을 자동으로 입력할 수 있습니다.
- DATE 열에는 상수 날짜 문자열만 기본값으로 지정할 수 있습니다.
- DATETIME 값에서 날짜만 필요할 때는 DATE() 함수를 활용하면 됩니다.