STR_TO_DATE我的查询MySQL工作台不工作
问题描述:
select * ,str_to_date(date,'%Y-%m-%d')
from numberofmortageloans;
Screenshot of the code not working STR_TO_DATE我的查询MySQL工作台不工作
我敢肯定,我失去了一些东西,但让我知道
答
你的日期值是无效的,像“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。但我会建议你修改你的数据。