Je suggérerais de ne pas trop réfléchir au problème et d'utiliser simplement la première date/heure du mois. Postgres a beaucoup de fonctions spécifiques à la date - de date_trunc()
à age()
à + interval
-- pour prendre en charge les dates.
Vous pouvez facilement les convertir au format souhaité, obtenir la différence entre deux valeurs, etc.
Si vous formulez votre requête comme :
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
Ensuite, il peut facilement tirer parti d'un index sur (user_id, year_month)
ou (year_month, user_id)
.