2017-01-11 2 views
0

Может ли кто-нибудь помочь мне в сортировке записей (База данных Postgres), как предполагалось?Сортировка дат по порядку даты и затем месяца, так что записи сортируются по дате сначала, а затем по месяцу

Ниже результат запроса на одном из моей таблицы, я отсортированный по дате части целого дня (ORDER BY extract(DAY from cast(date as DATE)))

Примечания :: Все даты в формате YYYY-MM-DD формате

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

это хорошо, поскольку он сортирует записи в соответствии с датой. Но, что я хочу, результат должен быть таким, чтобы все записи были отсортированы в соответствии с датой, поэтому все записи с даты 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 
+0

У вас когда-нибудь были дни, кроме 1 и 22? –

+0

Да, у меня будет. Но вы следуете за решением, которое работает 'ORDER BY extract (DAY from cast (date DATE)), date' – Hannan

ответ

1

Используйте два шага приказывать, а просто добавить еще один вид в пределах каждого блока дней:

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

Это упорядочение разместит день 1 записи первым и другие (т. е. день 22) записываются последними. В каждом блоке из 1/22 дат записи упорядочиваются по возрастанию по дате.

+0

Привет, @Tim Biegeleisen, спасибо за решение. Я просто быстро устал от первого решения с помощью оператора CASE и работал над текущим набором результатов. Но меня беспокоит, будет ли это работать, когда даты будут отличаться от 1 и 22. – Hannan

+0

Прохладный этот работает как шарм. thumsup: – Hannan

Смежные вопросы