2017-10-10 1 views
0

mysql이 내 datetime 값을 사용하지 않는 이유는 무엇입니까?mysql str_to_date 잘못된 datetime 값 문제

mysql> select STR_TO_DATE('2017-10-06T00:00:00', '%%Y-%%m-%%dT%%H:%%i:%%s'); 
+---------------------------------------------------------------+ 
| STR_TO_DATE('2017-10-06T00:00:00', '%%Y-%%m-%%dT%%H:%%i:%%s') | 
+---------------------------------------------------------------+ 
| NULL               | 
+---------------------------------------------------------------+ 
1 row in set, 2 warnings (0.00 sec) 

mysql> show warnings 
    -> ; 
+---------+------+--------------------------------------------------------------------------+ 
| Level | Code | Message                 | 
+---------+------+--------------------------------------------------------------------------+ 
| Warning | 1411 | Incorrect datetime value: '2017-10-06T00:00:00' for function str_to_date | 
| Warning | 1411 | Incorrect datetime value: '2017-10-06T00:00:00' for function str_to_date | 
+---------+------+--------------------------------------------------------------------------+ 
2 rows in set (0.01 sec) 

어떤 아이디어 ??

+0

왜 두 번'% '입니까? 나는 당신이 오직 하나의 매개 변수만을 필요로한다고 생각합니다. (예,''% Y- % m- % dT ... 등)'') – War10ck

답변

2

시도 :

SELECT STR_TO_DATE(
    '2017-10-06T00:00:00', 
    '%Y-%m-%dT%H:%i:%s' 
); 

db-fiddle를 참조하십시오.

+0

당신의 대답에 대해 매우 감사드립니다. 그거야. 내가 가지고있는 문제는 내가 다른 사람의 코드와 함께 일하고 있으며 Heredoc 구문에서 SQL 문을 래핑했습니다. 그런 다음 sprintf()로 특정 부분을 대체하므로 초 형식 (% s)을 대체하려고합니다. . 나는 이것이 초 동안 %% s를 사용한 이유라고 생각한다. 이중 퍼센트가 mysql의 특정 버전에서만 사용될 수 있는지 알고 계십니까? – SamBremner

+0

@SamBremner : 문서에 따르면, '%%'='리터럴 % 문자'는 [DATE_FORMAT()] (https://dev.mysql.com/doc/refman/5.7/en/date-and- time-functions.html # function_date-format). – wchiquito

+0

그래, 나는 알아 챘다. 나는 버전 4로 돌아가는 MySQL 매뉴얼을 보았다. 그 사건으로 나는이 코드가 어떻게 작동 하는지를 볼 수는 없지만, 단지 하나의 % 만 사용하도록 변경하지는 않을 것입니다. – SamBremner

관련 문제