2017-08-30 13 views

答えて

0

あなたの日付値が2005-03-00「のように、無効です'

STR_TO_DATE()が日付を正当な日付として評価できない場合、NULLを返します。

mysql> select str_to_date('2005-03-00', '%Y-%m-%d'); 
+---------------------------------------+ 
| str_to_date('2005-03-00', '%Y-%m-%d') | 
+---------------------------------------+ 
| NULL         | 
+---------------------------------------+ 

実際の日付で試してみると、STR_TO_DATE()はうまく動作します。

mysql> select str_to_date('2005-03-01', '%Y-%m-%d'); 
+---------------------------------------+ 
| str_to_date('2005-03-01', '%Y-%m-%d') | 
+---------------------------------------+ 
| 2005-03-01       | 
+---------------------------------------+ 

だから、ごみを出してください。

マニュアル(https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date)が一部で述べている:

NO_ZERO_DATEまたはNO_ZERO_IN_DATE SQLモードが有効になっている場合は、ゼロ日付または日付の一部が禁止されています。その場合には、STR_TO_DATE()はNULLを返し、警告を生成します。

mysql> set sql_mode=''; 
Query OK, 0 rows affected, 1 warning (0.00 sec) 

mysql> select str_to_date('2005-03-00', '%Y-%m-%d'); 
+---------------------------------------+ 
| str_to_date('2005-03-00', '%Y-%m-%d') | 
+---------------------------------------+ 
| 2005-03-00       | 
+---------------------------------------+ 

だから、あなたはあなたのSQL_MODEを変更することができます。しかし、私は代わりにあなたのデータを修正することをお勧めします。

関連する問題