Sql 按照日期和月份的顺序对日期进行排序,以便先按日期再按月份对记录进行排序

Sql 按照日期和月份的顺序对日期进行排序,以便先按日期再按月份对记录进行排序,sql,postgresql,sorting,datetime,Sql,Postgresql,Sorting,Datetime,有人能帮我整理一下记录(Postgres数据库)吗 以下是对我的一个表的查询结果,我已按整个日期的日期部分进行排序(按提取顺序(从cast开始的日期(日期为日期))) 注:所有日期均为YYYY-MM-DD格式 这很好,因为它根据日期部分对记录进行排序。但是,我想要的是,结果应该是,所有记录都应该根据日期部分进行排序,所以从日期1开始的所有记录都应该排在从日期22开始的所有记录之前。此外,它还应该按月份部分对这两个部分进行排序,即日期1和日期22的记录(如果您查看上面的结果集,您会注意到它是按日期

有人能帮我整理一下记录(Postgres数据库)吗

以下是对我的一个表的查询结果,我已按整个日期的日期部分进行排序(
按提取顺序(从cast开始的日期(日期为日期))

注:所有日期均为YYYY-MM-DD格式

这很好,因为它根据日期部分对记录进行排序。但是,我想要的是,结果应该是,所有记录都应该根据日期部分进行排序,所以从日期1开始的所有记录都应该排在从日期22开始的所有记录之前。此外,它还应该按月份部分对这两个部分进行排序,即日期1和日期22的记录(如果您查看上面的结果集,您会注意到它是按日期部分排序的,而不是按月份部分排序的)

2016-01-01
2016-02-01
2016-03-01
2016-04-01
2016-05-01
2016-06-01
2016-07-01
2016-08-01
2016-09-01
2016-10-01
2016-11-01
2016-12-01
2016-07-22
2016-08-22
2016-09-22
2016-10-22
2016-11-22
2016-12-22

使用两步排序,只需在每一天内添加另一个排序:

ORDER BY extract(DAY from cast(date as DATE)),      -- first sort by day
         date                                       -- then sort by date

此排序将首先放置第1天的记录,最后放置其他(即第22天)的记录。在每个1/22日期块中,记录按日期升序排列。

除了第1天和第22天之外,您还有其他日期吗?是的,我会有。但是您下面的解决方案似乎有效
按摘录排序(从cast开始的日期(日期为日期)),date
Hey@Tim Biegeleisen,谢谢你的解决方案。我很快就厌倦了你的第一个解决方案,它在当前的结果集上工作。但我关心的是,当日期不是1和22时,它是否工作
ORDER BY extract(DAY from cast(date as DATE)),      -- first sort by day
         date                                       -- then sort by date