MySQL에서 테이블에 현재 날짜를 삽입하려면 NOW() 함수를 사용하면 됩니다. 기본 구문은 다음과 같습니다.
INSERT INTO yourTableName(yourDateColumnName) VALUES(NOW());
NOW()와 CURDATE()의 차이점
컬럼의 데이터 타입이 DATE인 경우, NOW() 함수는 시간 정보를 제외한 현재 날짜만 삽입하며 이때 MySQL은 경고(warning)를 발생시킵니다. 경고 없이 깔끔하게 처리하려면 CURDATE() 함수를 사용하는 것이 좋습니다.
예제: 테이블 생성
먼저 실습용 테이블을 생성해 보겠습니다.
mysql> create table insertcurrentdate
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> currentDate date
-> );
Query OK, 0 rows affected (1.09 sec)AUTO_INCREMENT로 설정된 Id 컬럼과 DATE 타입의 currentDate 컬럼으로 구성된 간단한 테이블입니다.
현재 날짜 데이터 삽입
다음은 INSERT 명령을 사용해 레코드를 삽입하는 쿼리입니다. 비교를 위해 NOW()와 CURDATE() 두 함수를 모두 사용했습니다.
mysql> insert into insertcurrentdate(currentDate) values(NOW()); Query OK, 1 row affected, 1 warning (0.24 sec) mysql> insert into insertcurrentdate(currentDate) values(CURDATE()); Query OK, 1 row affected (0.18 sec)
실행 결과를 보면 NOW()를 사용한 첫 번째 INSERT 문에서는 1 warning이 발생한 반면, CURDATE()를 사용한 두 번째 INSERT 문에서는 경고 없이 정상적으로 처리된 것을 확인할 수 있습니다.
삽입된 데이터 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from insertcurrentdate;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+-------------+ | Id | currentDate | +----+-------------+ | 1 | 2019-04-05 | | 2 | 2019-04-05 | +----+-------------+ 2 rows in set (0.00 sec)
정리
두 함수 모두 DATE 타입 컬럼에는 동일하게 현재 날짜가 저장되지만, NOW()는 내부적으로 날짜와 시간을 함께 반환하기 때문에 DATE 타입 컬럼에 사용하면 경고가 발생합니다. 따라서 DATE 타입에는 CURDATE(), DATETIME 타입에는 NOW()를 사용하는 것이 가장 적절합니다.