str_to_date在我的查询MYSQL工作台中不起作用

时间:2017-08-30 00:34:27

标签: mysql date formatting

select * ,str_to_date(date,'%Y-%m-%d')
from numberofmortageloans;

Screenshot of the code not working enter image description here

我确定我错过了一些东西,但让我知道

1 个答案:

答案 0 :(得分: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。但我建议您修改数据。