使用sql查询检索时如何在表中对月份进行排序?

时间:2016-11-03 06:11:04

标签: sql-server sql-server-2008 select-query

我有一个查询从表中获取月份名称。但是,此列不是日期时间数据类型,它是v archar列。如何根据月份名称按升序对其进行排序?
这是我目前得到的输出。

  

八月
  十一月
  十月
  九月

这是我的查询

select distinct(payemnt_month) as month from payement_details

3 个答案:

答案 0 :(得分:3)

使用下面的一个我已经将您的月份添加到日期和年份。然后我提取月份数

select * from payment_details order by DATEPART(MM,payemnt_month+'01'+'00')

<强>更新 如果可能,请更新您的查询,如下所示。

SELECT * FROM 
(
SELECT DISTINCT month,
                Datepart(MM, payemnt_month+ '01' + '00') MONTHNO
FROM   payment_details )A
ORDER  BY MONTHNO

或者如果您没有任何问题可以保留月份

   SELECT DISTINCT month,
                        Datepart(MM, payemnt_month+ '01' + '00') MONTHNO
        FROM   payment_details
order by month,Datepart(MM, payemnt_month+ '01' + '00')

答案 1 :(得分:2)

ORDER BY CASE WHEN payment_month='August' THEN 8
              WHEN payment_month='November' THEN 11
              WHEN payment_month='October' THEN 10
              WHEN payment_month='September' THEN 9 END

如上所述构建您的ORDER BY子句,并根据需要将剩余的月份添加到其中。

答案 2 :(得分:0)

只需将order by子句放在:

select distinct(payemnt_month) as month from payement_details order by payemnt_month