预计今年将被选为当年,而不是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 |
答案 0 :(得分:3)
嗯,这是有意的。引用doc:
未指定的日期或时间部分的值为0,因此不完整 str中的指定值产生一些或所有部分设置为的结果 0. [...]除非将SQL模式设置为禁止此类值,否则允许部分值为0的“零”日期或日期。
很容易修复,顺便说一下:
select str_to_date(CONCAT(YEAR(NOW()), ' ', 'Jul 15 12:12:51'), '%Y %b %e %T');
-- July, 15 2013 12:12:51+0000
答案 1 :(得分:0)
简单,丑陋,但有效:
select str_to_date(concat('Jul 15, ', year(now()), ' 12:12:51'), '%b %e, %Y %T');