Jeg vil foreslå, at du ikke tænker for meget over problemet og bare bruger den første dato/tid på måneden. Postgres har masser af datospecifikke funktioner -- fra date_trunc()
til age()
til + interval
-- for at understøtte datoer.
Du kan nemt konvertere dem til det format, du ønsker, få forskellen mellem to værdier og så videre.
Hvis du formulerer din forespørgsel som:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
Så kan den let drage fordel af et indeks på (user_id, year_month)
eller (year_month, user_id)
.