1

我需要在我的数据库中获取信息。每行都有一个日期,格式类似于 2013 年 1 月。如何对它们进行排序,例如最晚的日期将首先给出?这些信息没有按顺序插入,因此需要首先对其进行排序。谢谢!:)

4

3 回答 3

2

只要您将日期保存在正确类型的列中,例如 TIMESTAMP、DATE 等,日期格式就无关紧要。如果您的日期保存在 VARCHAR 中,那么您的数据库就会被破坏,您应该首先修复列类型。

于 2013-03-20T06:17:24.323 回答
0

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

SELECT * FROM table WHERE STR_TO_DATE(column, %M %Y) ORDER BY column DESC
于 2013-03-20T06:21:07.040 回答
0

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


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
于 2013-03-20T08:13:55.073 回答