Tôi khuyên bạn không nên suy nghĩ quá nhiều về vấn đề và chỉ sử dụng ngày / giờ đầu tiên của tháng. Postgres có nhiều chức năng dành riêng cho ngày tháng - từ date_trunc()
thành age()
đến + interval
- để hỗ trợ ngày.
Bạn có thể dễ dàng chuyển đổi chúng sang định dạng bạn muốn, nhận được sự khác biệt giữa hai giá trị, v.v.
Nếu bạn đặt cụm từ truy vấn của mình là:
where year_month = date_trunc('month', now()) and user_id = 'adc1-23...'
Sau đó, nó có thể dễ dàng tận dụng chỉ mục trên (user_id, year_month)
hoặc (year_month, user_id)
.