2017-10-10 86 views
0

我無法弄清楚爲什麼mysql不喜歡我的日期時間值?mysql str_to_date錯誤的日期時間值問題

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) 。我想這就是爲什麼他們使用%%秒的秒數。你知道是否只能在特定版本的mysql上使用double percent嗎? – SamBremner

+0

@SamBremner:根據文檔,'%%'='字符%字符',請參見[DATE_FORMAT()](https://dev.mysql.com/doc/refman/5.7/en/date-and-時間functions.html#function_date格式)。 – wchiquito

+0

是的,我注意到,我甚至看着mysql手冊回到版本4和它一樣。由於這種情況,我不能看到這個代碼如何工作,但沒關係,我會改變它只使用一個%。 – SamBremner