PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menyortir bulan sambil saya mengonversinya menjadi teks

Saya sarankan date_trunc() alih-alih. Itu memotong date / timestamp ke unit yang diberikan.

Karena dua alasan:

  1. Anda ingin jumlah pesanan pada bulan Agustus tahun tertentu, seperti 2012, bukan jumlah untuk Agustus dari semua tahun dalam tabel. date_trunc('month', orderdate) melakukan hal itu dan mencegah Anda mencampur beberapa tahun secara tidak sengaja. Anda mendapatkan beberapa baris selama beberapa tahun.

  2. Anda berdua dapat ORDER BY dan GROUP BY ekspresi yang satu ini, kuerinya sedikit lebih cepat.

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 di sini
Lama sqlfiddle

Untuk nama bulan penuh, seperti yang ditunjukkan oleh contoh pertama Anda:

to_char(date_col, 'Month')

Untuk non-Inggris, nama lokal:

to_char(date_col, 'TMMonth')

Rincian dalam manual.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis kolom PostgreSQL mana yang harus digunakan untuk menyimpan Java BigDecimal?

  2. referensi tidak valid ke entri klausa FROM untuk tabel dalam kueri Postgres

  3. Django Postgresql menjatuhkan default kolom saat bermigrasi

  4. Hilangkan tanda kutip ganda dari bidang json secara selektif di PostgreSQL

  5. Cara membuat daftar semua database menggunakan PostgreSQL