如果指定的格式字符串和日期字符串不匹配,则MySQL将返回NULL值作为输出以及警告。以下是了解相同的示例-
mysql> Select STR_TO_DATE('20172810', '%Y,%d%m'); +------------------------------------+ | STR_TO_DATE('20172810', '%Y,%d%m') | +------------------------------------+ | NULL | +------------------------------------+ 1 row in set, 1 warning (0.00 sec)
上面的查询返回NULL作为输出,因为格式字符串在%Y之后有逗号(,),但日期字符串在2017之后没有任何逗号。
mysql> Show Warnings\G *************************** 1. row *************************** Level: Warning Code: 1411 Message: Incorrect datetime value: '20172810' for function str_to_date 1 row in set (0.00 sec)
同样,在区分格式字符串中的日期单位和日期字符串的顺序时,MySQL将执行与上述相同的操作。下面给出一个例子来理解它-
mysql> Select STR_TO_DATE('20172810', '%d%m%Y'); +-----------------------------------+ | STR_TO_DATE('20172810', '%d%m%Y') | +-----------------------------------+ | NULL | +-----------------------------------+ 1 row in set, 1 warning (0.00 sec)
在上面的查询中,格式字符串中的单位顺序从日期字符串中的单位顺序更改。
mysql> Show Warnings\G *************************** 1. row *************************** Level: Warning Code: 1411 Message: Incorrect datetime value: '20172810' for function str_to_date 1 row in set (0.00 sec)