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

MySQL ALLOW_INVALID_DATES SQL 모드란? 용도와 사용 예시

이름에서 알 수 있듯이 ALLOW_INVALID_DATES SQL 모드를 활성화하면 테이블에 유효하지 않은(잘못된) 날짜 값을 저장할 수 있습니다. 일반적으로 MySQL은 존재하지 않는 날짜, 예를 들어 11월 31일 같은 값을 입력하면 오류를 발생시키지만, 이 모드를 켜면 그러한 값도 그대로 저장됩니다.

사용 예시

먼저 SQL 모드를 ALLOW_INVALID_DATES로 설정한 후, 실제로 잘못된 날짜가 저장되는지 확인해 보겠습니다.

mysql> SET sql_mode = ALLOW_INVALID_DATES;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> Insert Into detail_bday(Name, Birth_Date) values('Sonia','1993-11-31');
Query OK, 1 row affected (0.09 sec)

mysql> Insert Into detail_bday(Name, Birth_Date) values('Ram','0000-00-00');
Query OK, 1 row affected (0.10 sec)

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)

결과 분석

위 결과 집합을 보면, ALLOW_INVALID_DATES SQL 모드를 활성화한 후 MySQL이 '1993-11-31'(존재하지 않는 날짜)와 '0000-00-00'(모든 값이 0인 날짜)처럼 원래는 유효하지 않은 날짜 값들을 오류 없이 정상적으로 저장한 것을 확인할 수 있습니다.

주의 사항

다만 이 모드는 날짜의 월 범위(1~12)와 일 범위(1~31)만 검증합니다. 즉, 월과 일의 숫자 범위만 맞으면 실제로 존재하지 않는 날짜라도 허용되며, 반대로 월이나 일 자체가 범위를 벗어나면 여전히 오류가 발생합니다. 또한 데이터 무결성 측면에서 잘못된 날짜가 저장될 수 있으므로, 특별한 이유가 없다면 기본값인 엄격 모드(STRICT 모드)를 유지하는 것이 권장됩니다.