MySQL 테이블에 날짜 값이 '0000-00-00'으로 저장되어 있다면, 이러한 날짜에서 연도(year) 값을 추출할 때 MySQL은 0을 반환합니다. 즉, 결과가 Year(2) 또는 Year(4) 형식으로 표현되지 않습니다.
이를 쉽게 이해하기 위해 'detail_bday' 테이블의 다음 데이터를 살펴보겠습니다.
mysql> Select * from detail_bday; +----+---------+------------+ | Sr | Name | Birth_Date | +----+---------+------------+ | 1 | Saurabh | 1990-05-12 | | 2 | Raman | 1993-06-11 | | 3 | Gaurav | 1984-01-17 | | 4 | Rahul | 1993-06-11 | | 5 | Sonia | 1993-11-31 | | 6 | Ram | 0000-00-00 | +----+---------+------------+ 6 rows in set (0.00 sec)
위 테이블에는 'Ram'이라는 사용자의 생년월일이 '0000-00-00'으로 저장되어 있습니다. 이제 다음 쿼리를 실행하여 해당 날짜에서 연도 값을 추출해 보겠습니다.
mysql> Select Year(Birth_date) from detail_bday Where Name = 'Ram'; +------------------+ | Year(Birth_date) | +------------------+ | 0 | +------------------+ 1 row in set (0.00 sec)
결과 분석
위 결과 집합을 보면, MySQL이 유효하지 않은 날짜 '0000-00-00'에 대해 Year(2)나 Year(4) 같은 특정 형식의 값을 반환하는 대신 단순히 0을 반환한다는 것을 확인할 수 있습니다.
참고로, YEAR(2) 형식은 MySQL 5.5.7부터 더 이상 권장되지 않으며, MySQL 8.0에서는 완전히 제거되었습니다. 따라서 현재는 YEAR(4), 즉 4자리 연도 형식만 지원되며, 유효하지 않거나 영(zero) 날짜에 대해서는 항상 0이 반환된다는 점을 기억하는 것이 좋습니다.