我正在尝试从表格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的初学者,所以我真的不知道如何解决这个问题。
感谢。
答案 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
列类型。