Kedua solusi termasuk hari terakhir bulan sebelumnya dan juga termasuk semua "hari ini".
Untuk date kolom:
SELECT *
FROM tbl
WHERE my_date BETWEEN date_trunc('month', now())::date - 1
AND now()::date
Anda dapat mengurangi nilai integer biasa dari date (tetapi bukan dari timestamp ) untuk mengurangi hari. Ini adalah cara termudah dan tercepat.
Untuk timestamp kolom:
SELECT *
FROM tbl
WHERE my_timestamp >= date_trunc('month', now()) - interval '1 day'
AND my_timestamp < date_trunc('day' , now()) + interval '1 day'
Perhatikan bahwa saya menggunakan < operator untuk kondisi kedua untuk mendapatkan hasil yang tepat (~ "sebelum besok").
Saya tidak melakukan cast ke date dalam kueri kedua. Sebagai gantinya saya menambahkan interval '1 day' , untuk menghindari transmisi bolak-balik.
Lihat jenis dan fungsi tanggal / waktu di manual.