Mysql查询无法正常工作 - 按日期排序

时间:2012-06-07 21:31:26

标签: mysql

我正在尝试从表格desc(格式为mm / dd / yyyy)订购记录,其类型为varchar(255)。

按日期排序

SELECT *, DATE_FORMAT(date,'%m/%d/%Y') AS reldate FROM table ORDER BY reldate DESC

这不起作用。对于date = 03/28/2009,reldate返回NULL。我是mysql的初学者,所以我真的不知道如何解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:1)

(我可能误解了你的问题。日期列是日期还是varchar?我的回答是基于它是varchar的假设,这是我所理解的。)

我认为你所追求的功能是STR_TO_DATE,而不是DATE_FORMAT。 DATE_FORMAT实际上与你想要的相反;它从一个日期变为一个字符串,而你正试图从一个字符串变为一个日期。

更大的问题是,为什么这个数据首先在VARCHAR列中?

答案 1 :(得分:0)

您可能需要先将date转换为datetime类型,然后才能在该功能中使用它。尝试:

SELECT *, DATE_FORMAT(CAST(`date` AS DATETIME),'%m/%d/%Y') AS reldate
FROM table ORDER BY reldate DESC

我在查询中的date字段周围添加反引号,以避免任何可能的保留字冲突。
正如其他人所提到的,这个字段首先应该是datetime列类型。