기존 테이블의 데이터를 수정하려면 UPDATE 문을 사용합니다. 이때 현재 날짜를 값으로 설정하려면 CURDATE() 함수를 함께 사용하면 됩니다.
UPDATE yourTableName SET yourColumnName = CURDATE();
CURDATE()는 쿼리가 실행되는 시점의 현재 날짜를 'YYYY-MM-DD' 형식으로 반환하는 MySQL 내장 함수입니다. 실제 동작 과정을 예제와 함께 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 datetime 타입의 컬럼을 가진 테이블을 생성합니다.
mysql> CREATE TABLE DemoTable -> ( -> DueDate DATETIME -> ); Query OK, 0 rows affected (0.58 sec)
2. 샘플 데이터 입력
INSERT 문을 사용해 몇 개의 레코드를 추가합니다.
mysql> INSERT INTO DemoTable VALUES('2019-01-10');
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES('2019-03-31');
Query OK, 1 row affected (0.18 sec)3. 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> SELECT * FROM DemoTable;
실행 결과는 다음과 같습니다.
+---------------------+ | DueDate | +---------------------+ | 2019-01-10 00:00:00 | | 2019-03-31 00:00:00 | +---------------------+ 2 rows in set (0.00 sec)
4. CURDATE()로 현재 날짜 업데이트
이제 UPDATE 문과 CURDATE() 함수를 사용하여 기존 레코드의 날짜를 현재 날짜로 변경합니다.
mysql> UPDATE DemoTable SET DueDate = CURDATE(); Query OK, 2 rows affected (0.13 sec) Rows matched: 2 Changed: 2 Warnings: 0
WHERE 절 없이 실행했기 때문에 테이블의 모든 행이 한꺼번에 업데이트됩니다. 특정 조건의 행만 변경하고 싶다면 WHERE 절을 추가하면 됩니다.
5. 업데이트 결과 확인
테이블을 다시 조회하여 변경된 값을 확인합니다.
mysql> SELECT * FROM DemoTable;
모든 레코드가 쿼리 실행 당시의 현재 날짜로 변경된 것을 볼 수 있습니다.
+---------------------+ | DueDate | +---------------------+ | 2019-06-22 00:00:00 | | 2019-06-22 00:00:00 | +---------------------+ 2 rows in set (0.00 sec)
참고: 관련 함수
날짜와 시간이 모두 필요한 경우에는 CURDATE() 대신 NOW() 또는 CURRENT_TIMESTAMP를 사용하면 현재 날짜와 시간이 함께 저장됩니다. 반면 CURDATE()는 날짜만 반환하며, 시간 부분은 자동으로 00:00:00으로 채워집니다.