在字符串到日期函数中使用当前年份

时间:2013-07-15 07:27:10

标签: mysql

预计今年将被选为当年,而不是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                        |

2 个答案:

答案 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');