मैं सुझाव दूंगा कि समस्या के बारे में बहुत अधिक न सोचें और केवल महीने की पहली तारीख/समय का उपयोग करें। Postgres में दिनांक-विशिष्ट कार्यों के बहुत सारे हैं -- date_trunc()
. से से age()
से + interval
-- तिथियों का समर्थन करने के लिए।
आप उन्हें अपने इच्छित प्रारूप में आसानी से रूपांतरित कर सकते हैं, दो मानों के बीच अंतर प्राप्त कर सकते हैं, इत्यादि।
यदि आप अपनी क्वेरी को इस रूप में वाक्यांश देते हैं:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
फिर यह (user_id, year_month)
. पर एक इंडेक्स का आसानी से लाभ उठा सकता है या (year_month, user_id)
.