我正在尝试从类型为 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 的初学者,所以我真的不知道如何解决这个问题。
谢谢。
我正在尝试从类型为 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 的初学者,所以我真的不知道如何解决这个问题。
谢谢。
(我可能误解了您的问题。日期列是日期还是 varchar?我的回答是基于假设它是 varchar,这是我所理解的。)
我认为您所追求的功能是STR_TO_DATE,而不是 DATE_FORMAT。DATE_FORMAT 实际上与您想要的相反;它从日期变为字符串,而您试图从字符串变为日期。
更大的问题是,为什么这些数据首先在 VARCHAR 列中?
您可能必须先转换date
为datetime
类型,然后才能在该函数中使用它。尝试:
SELECT *, DATE_FORMAT(CAST(`date` AS DATETIME),'%m/%d/%Y') AS reldate
FROM table ORDER BY reldate DESC
我会像我一样date
在查询中的字段周围放置反引号,以避免任何可能的保留字冲突。
正如其他人所提到的,这个字段首先应该是一个datetime
列类型。