Saya sarankan untuk tidak berpikir terlalu keras tentang masalah ini dan hanya menggunakan tanggal/waktu pertama dalam sebulan. Postgres memiliki banyak fungsi khusus tanggal -- dari date_trunc()
ke age()
ke + interval
-- untuk mendukung tanggal.
Anda dapat dengan mudah mengonversinya ke format yang Anda inginkan, mendapatkan perbedaan antara dua nilai, dan seterusnya.
Jika Anda mengutarakan kueri Anda sebagai:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
Kemudian dapat dengan mudah memanfaatkan indeks di (user_id, year_month)
atau (year_month, user_id)
.