MySQL:str_to_date陷入困境

时间:2013-09-05 18:30:14

标签: mysql

我尝试使用str_to_date函数转换其中一个列名称timeposted(varchar,因为某些数据有像昨天和今天一样的单词),因为我需要稍后检索3个月的时间段但不知何故它一直变为2020年,任何一年发现的时间。

示例:

  1. 09-03-2005转换成09-03-2020后
  2. 31-09-2011转换成31-03-2020后
  3. 我的sql:

    select str_to_date(REPLACE(LEFT(timeposted, LOCATE(' ', timeposted)), ',', ''), '%d-%m-%y') from post
    

    我尝试过DATE_FORMAT,但问题仍然存在。对于此问题,您是否有任何解决方法以防止任何年度更改。

    编辑:替换用于删除',',因为在timeposted中找到的日期是“31-02-2010,04:25 PM”

    谢谢, 基思

1 个答案:

答案 0 :(得分:2)

您的直接问题是由STR_TO_DATE()中使用的格式字符串错误引起的。

而不是

'%d-%m-%y'
       ^^

使用

'%d-%m-%Y'

这是 SQLFiddle 演示


现在,正如MarcB已经评论过你并不需要所有这些字符串操作。只是做

SELECT STR_TO_DATE(timeposted, '%d-%m-%Y') timeposted
  FROM post

这是 SQLFiddle 演示