我已经在一个表中存储了月份,比如“12月,8月,7月”,等等。我如何对我的查询进行排序,使它们按时间顺序而不是字母顺序排序?我可能需要从字符串到时间的转换,以获得一个数字,然后按此排序,我可以在PHP中做到这一点,但不知道如何在查询中直接做到这一点,所以我不必进行查询,使用PHP操作一些数据,然后使用这些数据进行另一个查询。
MySQL可以在查询中做到这一点吗?
谢谢。
发布于 2011-12-17 02:59:52
我要做的是创建另一个表
CREATE TABLE MONTH_NAME
(
MONTH_NAME VARCHAR, // or whatever type the month is in your db
MONTH_NUMBER INT
)填入“一月”,1等
然后在查询中,连接这里的两个表,一个是月份名称,另一个是order by MONTH_NUMBER。
发布于 2011-12-17 03:05:18
您可以使用CASE statement
SELECT
CASE
WHEN `month` = 'January' THEN 1
WHEN `month` = 'February' THEN 2
WHEN `month` = 'March' THEN 3
WHEN `month` = 'April' THEN 4
WHEN `month` = 'May' THEN 5
....
END AS orderbymonth
FROM yourtable
ORDER BY orderbymonth ASC发布于 2011-12-17 03:00:50
如果您有一个months表,那么您可以按month_number排序。
select field from tablename join months using (month_name)
order by month_number asc;例如:
insert into months (month_name, month_number)
values ('January', 1), ('February', 2), ...https://stackoverflow.com/questions/8538818
复制相似问题