0

预计年份将被选为当前年份,而不是 00 年,如下所示。

mysql> select str_to_date('Jul 15 12:12:51', '%b %e %T');
+--------------------------------------------+
| str_to_date('Jul 15 12:12:51', '%b %e %T') |
+--------------------------------------------+
| 0000-07-15 12:12:51                        |
+--------------------------------------------+

预期结果:

| 2013-07-15 12:12:51                        |
4

2 回答 2

3

嗯,这是故意的。引用文档

未指定的日期或时间部分的值为 0,因此 str 中未完全指定的值会产生部分或全部部分设置为 0 的结果。 [...] 允许“零”日期或部分值为 0 的日期,除非 SQL mode 设置为不允许这样的值。

顺便说一句,这很容易修复:

select str_to_date(CONCAT(YEAR(NOW()), ' ', 'Jul 15 12:12:51'), '%Y %b %e %T');
-- July, 15 2013 12:12:51+0000 
于 2013-07-15T07:33:01.063 回答
0

简单,丑陋,但有效:

select str_to_date(concat('Jul 15, ', year(now()), ' 12:12:51'), '%b %e, %Y %T');
于 2013-07-15T07:33:28.690 回答