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

Cara Mendapatkan Hari Tahun Ini dari Tanggal di PostgreSQL

Masalah:

Anda ingin mendapatkan hari dalam setahun dari tanggal atau kolom stempel waktu di PostgreSQL.

Contoh:

Basis data kami memiliki tabel bernama software_sale dengan data pada kolom id , software , dan sale_date .

id perangkat lunak tanggal_penjualan
1 SuperGame X 15-09-2019
2 Peramban X 15-10-2019
3 Berita DB 26-11-2019
4 MyPaintSoft 15-10-2018
5 OS baru 15-10-2019

Mari kita hitung jumlah item perangkat lunak yang terjual berdasarkan hari dalam setahun. Kami akan menggunakan ini untuk mengetahui hari mana dalam setahun (terlepas dari tahun sebenarnya) penjualan tinggi atau rendah.

Solusi 1:

Kami akan menggunakan DATE_PART() fungsi. Inilah kueri yang akan Anda tulis:

SELECT DATE_PART('doy',sale_date) 
         AS  day_of_year,
       COUNT(id) as count
FROM software_sale
GROUP BY day_of_year;

Berikut hasil querynya:

hari_tahun hitung
258 1
288 3
330 1

Diskusi:

Gunakan DATE_PART() PostgreSQL berfungsi untuk mengambil nomor hari dalam setahun dari kolom tanggal/waktu/tanggal/waktu. Fungsi ini membutuhkan dua argumen. Argumen pertama adalah bagian tanggal (atau bagian waktu) yang ingin dikembalikan fungsinya. Dalam contoh ini, kami menggunakan ‘doy ', yang mengembalikan hari dalam setahun. Anda dapat menggunakan bagian lain, seperti hari, tahun, bulan, jam, menit, minggu, dll. Anda dapat mempelajari lebih lanjut di dokumentasi PostgreSQL.

Argumen kedua adalah tanggal/waktu/datetime/stempel waktu yang ingin Anda ekstrak bagian tanggal/waktunya. Ini bisa berupa ekspresi yang mengembalikan nilai tanggal/waktu/tanggal/waktu/stempel waktu atau nama kolom tanggal/waktu/tanggal/waktu/stempel waktu. (Dalam contoh kita, ini adalah kolom tanggal tipe data.)

Fungsi DATE_PART() dengan 'doy ' pengidentifikasi mengembalikan nomor hari dalam setahun (dari 1 hingga 365/366) sebagai bilangan bulat. Dalam contoh kita, hari dalam tahun dari tanggal penjualan (dari sale_date kolom) sekarang ditampilkan di kolom baru, day_of_year . Tanggal 15 Oktober adalah hari ke-288 di tahun 2019 dan 2018; pada hari itu selama dua tahun, total tiga penjualan dilakukan (2 di 2019, 1 di 2018).

Kami menggunakan COUNT() fungsi agregat untuk menghitung jumlah penjualan. Fungsi ini membutuhkan satu argumen; dalam hal ini, ini adalah nomor ID perangkat lunak. Kami juga membutuhkan GROUP BY klausa dalam kueri ini untuk mengelompokkan catatan menurut hari dalam setahun. (Dalam contoh kita, argumen sebenarnya adalah day_of_year , alias untuk DATE_PART('doy',sale_date) .)

Ini bukan satu-satunya cara untuk mendapatkan hari dalam setahun. Kita juga dapat menggunakan EXTRACT() fungsi.

Solusi 2:

Inilah kueri yang akan Anda tulis dengan EXTRACT() fungsi:

SELECT EXTRACT('doy' FROM sale_date) 
         AS  day_of_year,
       COUNT(id) as count
FROM software_sale
GROUP BY day_of_year;

Fungsi ini mirip dengan DATE_PART() . Perbedaannya adalah kita menggunakan FROM alih-alih koma antara pengidentifikasi bagian tanggal dan argumen tanggal dan waktu. Hasilnya sama. Catatan:EXTRACT() adalah standar SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengatur Format Output Interval di PostgreSQL

  2. postgresql COUNT(DISTINCT ...) sangat lambat

  3. Bagaimana cara menutup koneksi idle di PostgreSQL secara otomatis?

  4. Beberapa ide tentang pengumpulan sumber daya tingkat rendah di PostgreSQL

  5. Aksen PostgreSQL + pencarian tidak peka huruf besar-kecil