mysql에서 이런 입력이 가능한 이유는 mysql에서 불완전한 날짜의 입력을 허용하기 때문이다.
Ranges for the month and day specifiers begin with zero due to the fact that MySQL permits the storing of incomplete dates such as '2014-00-00'
NO-ZERO_DATE
하지만 막상 다음과 같이 입력하려면 오류가 발생한다.
create table test(
birth date primary key
);
insert into test values('2000-00-00');
-- Error Code: 1292. Incorrect date value: '2000-00-00' for column 'birth' at row 1
zero date를 입력하기 위해서는 SQL_MODE에 NO_ZERO_DATE가 없어야 한다.
set @@SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
위와 같이 SQL_MODE를 변경 후 다시 insert를 하면 잘 들어간다.
NO-ZERO_DATE는 deprecated 예정
하지만 위 속성 자체는 deprecated 내용이다. 아마도 하위 호환성을 위해서 존재하는 속성인듯 싶다. ZERO_DATE 관련된 내용은 앞으로 없어지지 않을까 한다.