sourcecode

MariaDB 10.1에서 비활성 날짜 값을 제거하려면 어떻게 해야 합니까?

copyscript 2022. 9. 4. 21:48
반응형

MariaDB 10.1에서 비활성 날짜 값을 제거하려면 어떻게 해야 합니까?

날짜 열이 있는 테이블이 하나 있습니다.

foo(이전):

+------------+
| datecolumn |
+------------+
| 1939-04-06 |
| 1949-02-30 |
+------------+

날짜가 유효하지 않으면 NULL로 설정하고 싶습니다.

foo(후):

+------------+
| datecolumn |
+------------+
| 1939-04-06 |
| NULL       |
+------------+

MySQL(5.7)에서는 이 트릭을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

ALTER TABLE `foo` MODIFY COLUMN `datecolumn` varchar(255) NULL DEFAULT NULL FIRST;
SET SQL_MODE='ALLOW_INVALID_DATES';
ALTER TABLE `foo` MODIFY COLUMN `datecolumn` date NULL DEFAULT NULL FIRST;
SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
UPDATE `foo` SET `datecolumn` = NULL WHERE `datecolumn` = '0000-00-00';

다만, 이것은 MariaDB 10.1에서는 동작하지 않는 것 같습니다.

1) 다양한 SQL_MODE

2) 각종 STR_TO_DATE 또는 DATE_FORMAT 접근법(NULL을 얻으려고 했는데 유효하지 않은 날짜 문자열을 날짜로 변환했습니다)

누가 내 목표 달성을 도와줄 수 있나요?

이 조작은 유효합니다.

UPDATE foo SET datecolumn = CAST(datecolumn AS DATE);

SQL_MODE에서 strict 모드가 설정되어 있지 않은지 확인하십시오.설정되지 않은 경우 오류가 발생합니다.

언급URL : https://stackoverflow.com/questions/40769880/how-to-remove-invalid-date-values-in-mariadb-10-1

반응형