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.