Ik zou willen voorstellen om niet te veel over het probleem na te denken en alleen de eerste datum/tijd van de maand te gebruiken. Postgres heeft tal van datumspecifieke functies -- van date_trunc()
tot age()
tot + interval
-- om datums te ondersteunen.
U kunt ze gemakkelijk converteren naar het gewenste formaat, het verschil tussen twee waarden krijgen, enzovoort.
Als u uw vraag formuleert als:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
Dan kan het gemakkelijk profiteren van een index op (user_id, year_month)
of (year_month, user_id)
.