1

我尝试使用 str_to_date 函数转换列名 timeposted 之一(varchar,因为某些数据具有像昨天和今天这样的词),因为我需要稍后检索 3 个月的时间段,但不知何故,它以任何方式将全年更改为 2020 年年份中发现的时间。

例子:

  1. 09-03-2005 转换后变为 09-03-2020
  2. 转换后的 31-09-2011 变为 31-03-2020

我的 sql:

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

我试过 DATE_FORMAT 但问题还是一样。您是否有任何解决此问题的方法以防止年份发生任何变化。

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

谢谢,基思

4

1 回答 1

2

您的直接问题是由您在STR_TO_DATE().

代替

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

采用

'%d-%m-%Y'

这是SQLFiddle演示


现在正如 MarcB 已经评论的那样,您不需要所有这些字符串操作。做就是了

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

这是SQLFiddle演示

于 2013-09-05T19:25:22.867 回答