Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 유효하지 않은 날짜 저장을 허용하는 방법

ALLOW_INVALID_DATES 모드란?

MySQL은 기본적으로 존재하지 않는 날짜(예: 11월 31일)를 DATE 컬럼에 저장하려고 하면 오류를 발생시킵니다. 하지만 SQL 모드를 ALLOW_INVALID_DATES로 설정하면 MySQL이 실제로 존재하지 않는 날짜 값도 테이블에 저장할 수 있게 됩니다.

SQL 모드 활성화 방법

다음과 같이 세션 단위로 SQL 모드를 변경할 수 있습니다.

mysql> SET sql_mode = 'ALLOW_INVALID_DATES';

유효하지 않은 날짜 삽입 예제

모드를 활성화한 후에는 11월에 존재하지 않는 31일 같은 날짜도 정상적으로 INSERT 할 수 있습니다. 아래 예제를 통해 확인해 보겠습니다.

mysql> Insert into order1234(ProductName, Quantity, Orderdate) values('B',500,'2015-11-31');
Query OK, 1 row affected (0.06 sec)

mysql> Select * from order1234;
+-------------+----------+--------------+
| ProductName | Quantity | OrderDate    |
+-------------+----------+--------------+
| A           | 500      | 0000-00-00   |
| B           | 500      | 2015-11-31   |
+-------------+----------+--------------+
2 rows in set (0.00 sec)

실행 결과를 보면 MySQL이 '2015-11-31'이라는 실제로 존재하지 않는 날짜를 오류 없이 테이블에 그대로 저장한 것을 확인할 수 있습니다.

주의 사항

ALLOW_INVALID_DATES 모드는 월 범위가 1~12, 일 범위가 1~31인지만 검사하며, 해당 월에 실제로 그 날짜가 존재하는지까지는 확인하지 않습니다. 따라서 데이터 무결성이 중요한 애플리케이션에서는 이 모드 사용 시 잘못된 날짜 데이터가 유입될 수 있다는 점을 반드시 고려해야 합니다.