如果指定的格式字符串与作为参数传递给 STR_TO_DATE() 函数的日期字符串不符,MySQL 会返回什么?


如果指定的格式字符串和日期字符串不匹配,则 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)

更新于:2020-01-30

423 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.