Apabila menanyakan pangkalan data untuk mendapatkan semula rekod dalam julat tarikh tertentu, selalunya perlu memasukkan hari terakhir bulan sebelumnya. Julat ini boleh berbeza-beza setiap bulan, bergantung pada tarikh semasa.
Untuk menentukan hari terakhir bulan sebelumnya tanpa menggunakan fungsi, anda boleh menggunakan pertanyaan berikut untuk lajur tarikh:
SELECT * FROM tbl WHERE my_date BETWEEN date_trunc('month', now())::date - 1 AND now()::date
Fungsi date_trunc('month', now()) mengembalikan hari pertama bulan semasa. Dengan menolak satu hari daripada hasil ini menggunakan operator penolakan, kita mendapat hari terakhir bulan sebelumnya.
Untuk lajur cap masa, pertanyaannya berbeza sedikit:
SELECT * FROM tbl WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day' AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Date_trunc ('month', now()) fungsi mengembalikan permulaan bulan semasa sebagai cap waktu. Untuk mendapatkan hari terakhir pada bulan sebelumnya, kami menolak satu hari menggunakan - selang '1 hari' ungkapan.
Untuk syarat kedua, kami menambah satu hari pada date_trunc('hari' , sekarang() ) hasil menggunakan selang '1 hari' untuk memastikan julat merangkumi semua "hari ini."
Jika anda lebih suka menggunakan fungsi, anda boleh gunakan fungsi LAST_DAY() untuk mencapai hasil yang sama:
SELECT * FROM tbl WHERE my_date BETWEEN LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AND NOW()
Fungsi ini secara eksplisit mengira hari terakhir bulan sebelumnya berdasarkan tarikh semasa.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Hari Terakhir Bulan Sebelumnya dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!