2017-10-17 5 views
1

文字列を時刻形式に変更しようとしていますが、データベース構成で問題があるようです。なぜなら、私は次のクエリをしようとしているとき、それは返信で私を返す日付形式STR_TO_DATE('18:11:52 '、'%H:%i:%s ')NULLを返します。

mysql> select STR_TO_DATE('18:11:52', '%H:%i:%s'); 
+-------------------------------------+ 
| STR_TO_DATE('18:11:52', '%H:%i:%s') | 
+-------------------------------------+ 
| NULL        | 
+-------------------------------------+ 
mysql> show warnings; 
+---------+------+---------------------------------------------------------------+ 
| Level | Code | Message              | 
+---------+------+---------------------------------------------------------------+ 
| Warning | 1411 | Incorrect datetime value: '18:11:52' for function str_to_date | 
+---------+------+---------------------------------------------------------------+ 

しかし、私は別のMysqlサーバーで同じクエリを試してみるとうまくいく。設定上の問題があるはずです。 誰かが助けることができれば感謝します。前もって感謝します。

+1

奇妙な。 MySQL 5.5では動作するが、5.7では動作しないことがわかった。 –

+0

バグのようです。 –

+0

参考のために、あなたはmysql 5.6の私のための文の作品です。私はあなたの設定で何か違うものがあるのだろうかと思います。 'show variables like sql_mode 'の出力を追加する機会はありますか?mysqlのドキュメントには、sql_modeをベースにした少なくとも1つのgatchaがあります。https://dev.mysql.com/doc/refman/5.7 /en/date-and-time-functions.html#function_str-to-date –

答えて

3

つまり、NO_ZERO_DATEまたはNO_ZERO_IN_DATE SQLモードが有効になっているため、暗黙的な日付が0000-00-00の時刻文字列をdatetimeに変換することはできません。

あなたの入力値を使用すると、このように、CONVERT()機能を使用することがより多くの意味を作るかもしれない、実際に時間文字列(ではないdatetime型)であるので:

SELECT CONVERT('18:11:52', TIME); 
+0

ありがとうございます。 –

+0

@FaizanYounus問題が解決したら答えを受け入れるべきです。 – Barmar

+0

はい@Barmarを行った –

関連する問題