MySQL에서 YEAR 유형의 컬럼에 현재 연도를 자동으로 삽입하려면 쿼리문 안에서 CURDATE() 또는 NOW() 함수를 사용하면 됩니다.
기본 원리
YEAR 타입은 날짜·시간 값을 입력받으면 MySQL이 자동으로 그 값에서 연도 부분만 추출하여 저장합니다. 따라서 CURDATE()(현재 날짜)나 NOW()(현재 날짜 및 시간)를 전달해도 결과적으로 현재 연도만 저장되는 것입니다.
CURDATE() 사용 예제
mysql> Insert into year1(Year_Copyright) values (CURDATE()); Query OK, 1 row affected, 1 warning (0.06 sec) mysql> Select * from year1; +----------------+ | Year_Copyright | +----------------+ | 2017 | | 2017 | +----------------+ 2 rows in set (0.00 sec)
NOW() 사용 예제
mysql> Insert into year1(Year_Copyright) values (NOW()); Query OK, 1 row affected, 1 warning (0.06 sec) mysql> Select * from year1; +----------------+ | Year_Copyright | +----------------+ | 2017 | | 2017 | | 2017 | +----------------+ 3 rows in set (0.00 sec)
추가 참고 사항
두 함수 모두 동일한 결과를 반환하지만, 반환하는 값의 성격이 조금 다릅니다.
- CURDATE(): 'YYYY-MM-DD' 형식의 현재 날짜만 반환합니다.
- NOW(): 'YYYY-MM-DD HH:MM:SS' 형식의 현재 날짜와 시간을 함께 반환합니다.
YEAR 컬럼에는 어느 쪽을 넣어도 MySQL이 내부적으로 앞의 네 자리(연도)만 잘라내어 저장하기 때문에 결과는 같습니다. 또한 쿼리 실행 시 나타나는 경고(1 warning)는 날짜/시간 값이 YEAR 타입으로 변환되는 과정에서 발생하는 것으로, 데이터가 올바르게 저장되므로 무시해도 무방합니다.