首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL月份存储为字符串,如何按时间顺序而不是字母顺序排序?

问MySQL月份存储为字符串,如何按时间顺序而不是字母顺序排序?
EN

Stack Overflow用户
提问于 2011-12-17 02:55:20
回答 5查看 1.4K关注 0票数 0

我已经在一个表中存储了月份,比如“12月,8月,7月”,等等。我如何对我的查询进行排序,使它们按时间顺序而不是字母顺序排序?我可能需要从字符串到时间的转换,以获得一个数字,然后按此排序,我可以在PHP中做到这一点,但不知道如何在查询中直接做到这一点,所以我不必进行查询,使用PHP操作一些数据,然后使用这些数据进行另一个查询。

MySQL可以在查询中做到这一点吗?

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2011-12-17 02:59:52

我要做的是创建另一个表

代码语言:javascript
复制
CREATE TABLE MONTH_NAME
( 
    MONTH_NAME VARCHAR, // or whatever type the month is in your db
    MONTH_NUMBER INT
)

填入“一月”,1等

然后在查询中,连接这里的两个表,一个是月份名称,另一个是order by MONTH_NUMBER。

票数 3
EN

Stack Overflow用户

发布于 2011-12-17 03:05:18

您可以使用CASE statement

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2011-12-17 03:00:50

如果您有一个months表,那么您可以按month_number排序。

代码语言:javascript
复制
select field from tablename join months using (month_name) 
  order by month_number asc;

例如:

代码语言:javascript
复制
insert into months (month_name, month_number) 
  values ('January', 1), ('February', 2), ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8538818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档