잘못된 datetime 값 오류를 방지하려면 STR_TO_DATE() 메서드를 사용할 수 있습니다.
날짜/시간 형식은 YYYY-MM-DD이며 동일한 형식으로 삽입하지 않으면 오류가 생성된다는 것을 알고 있습니다.
실제로 이 오류가 발생하는 원인을 살펴보겠습니다. 이를 위해 새 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table CorrectDatetimeDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > ArrivalTime datetime - > ); Query OK, 0 rows affected (0.63 sec)
날짜/시간 형식이 잘못된 날짜를 포함하려고 할 때 발생합니다.
mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 1
위의 오류를 방지하려면 STR_TO_DATE()를 사용할 수 있습니다.
구문은 다음과 같습니다.
INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));
이제 위의 구문과 같이 올바른 형식으로 datetime을 다시 삽입해 보겠습니다.
쿼리는 다음과 같습니다
mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다.
쿼리는 다음과 같습니다
mysql> select *from CorrectDatetimeDemo;
다음은 출력입니다.
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-18 11:15:45 | | 2 | 2017-01-15 10:10:15 | | 3 | 2016-04-12 15:30:35 | +----+---------------------+ 3 rows in set (0.00 sec)