在mysql中使用自定义日期排序

时间:2013-03-20 06:15:03

标签: php mysql codeigniter

我需要在我的数据库中获取信息。每一行都有一个格式化为2013年1月的日期。如何对它们进行排序,例如最新日期将首先给出?没有插入这些信息,这就是为什么它们需要先排序的原因。谢谢! :)

3 个答案:

答案 0 :(得分:2)

日期格式是无关紧要的,只要您将日期保存在适当类型的列中,如TIMESTAMP,DATE等。如果您的日期保存在ie VARCHAR中,那么您的数据库将被破坏,您应首先修复列类型。 / p>

答案 1 :(得分:0)

您已将日期存储在varchar中。所以使用STR_TO_DATE()函数进行排序

SELECT * FROM table WHERE STR_TO_DATE(column, %M %Y) ORDER BY column DESC

答案 2 :(得分:0)

好吧,这有点棘手,但它认为这是唯一的方法,因为你在表中有varchar作为数据类型。它有效,但我不确定大规模表数据的性能。 诀窍是将你的varchar分成2个mumber字段,一个用年份和月份数字。


SELECT mydate
FROM mytable
ORDER BY RIGHT(mydate,4) DESC, //get the year
CASE LEFT(mydate,INSTR(mydate,' ')-1)
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8 
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
END DESC //get the month and turn in to number