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

MySQL 날짜 열에 2월 30일 같은 유효하지 않은 날짜를 저장하는 방법

MySQL에서 2월 30일과 같은 날짜 저장하기

MySQL 테이블에 2월 30일처럼 실제로 존재하지 않는 날짜를 저장하려면, 먼저 ALLOW_INVALID_DATES 모드를 활성화해야 합니다.

기본 상태에서의 오류

ALLOW_INVALID_DATES 모드를 활성화하지 않은 상태에서 이러한 날짜를 삽입하려고 하면 MySQL은 다음과 같은 오류를 반환합니다.

mysql> Insert into date_testing(date) values('2017-02-30');
ERROR 1292 (22007): Incorrect date value: '2017-02-30' for column
'Date' at row1

ALLOW_INVALID_DATES 모드 활성화

이 문제를 해결하려면 아래와 같이 SQL 모드를 변경하여 ALLOW_INVALID_DATES를 활성화해야 합니다.

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

mysql> Insert into date_testing(date) values('2017-02-30');
Query OK, 1 row affected (0.14 sec)

mysql> select * from date_testing;
+------------+
| Date |
+------------+
| 2017-02-30 |
+------------+
1 row in set (0.00 sec)

위 쿼리를 실행한 후에는 2월 30일과 같은 유효하지 않은 날짜도 DATE 열에 정상적으로 삽입할 수 있습니다.

주의 사항

ALLOW_INVALID_DATES 모드는 세션 단위 또는 전역(Global)으로 설정할 수 있으며, 서버 재시작 시 설정이 초기화될 수 있습니다. 또한 이 모드는 날짜 형식 자체가 올바른지(예: 월은 1~12 범위)만 검증하므로, 데이터 무결성이 중요한 애플리케이션에서는 신중하게 사용하는 것이 좋습니다.