PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Сортиране на месеци, докато ги конвертирам в текст

Предлагам date_trunc() вместо. Той съкращава date / timestamp към дадената единица.

Поради две причини:

  1. Искате броя на поръчките през август на определена година, като 2012 г., не сумата за август на всички години в таблицата. date_trunc('month', orderdate) прави точно това и предотвратява случайно смесване на няколко години. Получавате множество редове за няколко години.

  2. И двамата можете да ORDER BY и GROUP BY този един израз, заявката е малко по-бърза.

SELECT to_char(date_trunc('month', orderdate), 'Mon') AS "Month" -- repeat expr.
      ,count(*) AS "Quantity"
FROM   orders
GROUP  BY date_trunc('month', orderdate)   -- 1 item covers it
ORDER  BY date_trunc('month', orderdate);

db<>fiddle тук
Стар sqlfiddle

За пълни имена на месеци, както предполага вашият първи пример:

to_char(date_col, 'Month')

За неанглийски, локализирани имена:

to_char(date_col, 'TMMonth')

Подробности в ръководството.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SET extra_float_digits =3 в postgresql

  2. Обединяване на връзки за приложение за Android, което се свързва с Postgresql DB

  3. Създайте Postgresql таблица от Avro Schema в Nifi

  4. Шаблони и модификатори за числово форматиране в PostgreSQL

  5. Postgresql хвърля нулева стойност в колона нарушава ограничението за не-нула при използване на връзката oneToMany в JPA