1

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

按日期排序

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

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

谢谢。

4

2 回答 2

1

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

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

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

于 2012-06-07T21:35:41.607 回答
0

您可能必须先转换datedatetime类型,然后才能在该函数中使用它。尝试:

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

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

于 2012-06-07T21:36:22.157 回答