diff --git a/core/api/billPriceSum.py b/core/api/billPriceSum.py
index 7a5d83fe7bb299e4eac8de28ae98ec1b26392e36..388c1290ba0920d311ce1d581423574b391f50cc 100644
--- a/core/api/billPriceSum.py
+++ b/core/api/billPriceSum.py
@@ -36,9 +36,9 @@ class BillSumPriceListView(generics.ListAPIView):
         for i in range(1,12):
             qs = BillSearchQuerySet(Bill).searchCategories(query=i, user=user)
             if item == 'today':
-                qs = qs.searchToday(user=user)
+                qs = qs.searchByDay(user=user)
             elif item == 'month':
-                qs = qs.searchThisMonth(user=user)
+                qs = qs.searchByMonth(user=user)
             total_price = qs.aggregate(Sum('price'))
             data[categorieModel[i]] = total_price['price__sum']
         return response.Response(data)
diff --git a/core/api/billSearch.py b/core/api/billSearch.py
index 75207375917863d689c003d47c3858c6356c9c35..4d8fb76945468ddc8165e1deac710f1b44c75635 100644
--- a/core/api/billSearch.py
+++ b/core/api/billSearch.py
@@ -3,6 +3,9 @@ from core.models.bill import Bill, BillSearchQuerySet
 from core.serializers.bill import BillSerializer
 from rest_framework import permissions, authentication
 
+from datetime import date, datetime
+
+
 class SearchBillListView(generics.ListAPIView):
     queryset = Bill.objects.all()
     serializer_class = BillSerializer
@@ -10,27 +13,31 @@ class SearchBillListView(generics.ListAPIView):
 
     # item = categories  ----->    keyword = 1/2/3/4/5 ..
     #        price       ----->    keyword = price
-    #        date        ----->    keyword = month / day
+    #        date        ----->    keyword = month / day / year    ----->  date: yyyy/mm/dd
     #        title       ----->    keyword = title
 
     def get_queryset(self, *args, **kwargs):
-        print(self.request.query_params)
         qs = BillSearchQuerySet(Bill)
-        item = self.request.GET.get("item")
+        item = self.request.query_params.get("item")
         result = Bill.objects.none()
         user = None
         if self.request.user.is_authenticated:
-            user =  self.request.user
-        keyword = self.request.GET.get("keyword")
+            user = self.request.user
+        keyword = self.request.query_params.get("keyword")
+        
         if item == "categories":
             result = qs.searchCategories(keyword, user=user)
         elif item == "price":
             result = qs.searchPrice(keyword, user=user)
         elif item == "date":
-            if keyword == "month":
-                result = qs.searchThisMonth(user=user)
-            elif keyword == "today":
-                result = qs.searchToday(user=user)
+            anchor_date = self.request.query_params.get("date", None)
+            anchor_date = date.today() if anchor_date is None else datetime.strptime(anchor_date, '%Y-%m-%d')
+            if keyword == "year":
+                result = qs.searchByYear(user=user, anchor_date=anchor_date)
+            elif keyword == "month":
+                result = qs.searchByMonth(user=user, anchor_date=anchor_date)
+            elif keyword == "day":
+                result = qs.searchByDay(user=user, anchor_date=anchor_date)
         elif item == "title":
             result = qs.searchTitle(keyword, user=user)
         return result
\ No newline at end of file
diff --git a/core/models/bill.py b/core/models/bill.py
index 3579d86ea0e99741a88a0a9b838f354ab1b5d0a0..6d1d28db18adf373e418063c6d34f195e15e0b20 100644
--- a/core/models/bill.py
+++ b/core/models/bill.py
@@ -6,7 +6,6 @@ from core.models.utils import UUIDModel
 import datetime
 from datetime import date
 from dateutil.relativedelta import relativedelta
-# pip install python-dateutil
 
 
 class BillSearchQuerySet(models.QuerySet):
@@ -24,24 +23,31 @@ class BillSearchQuerySet(models.QuerySet):
             qs = self.filter(user=user).filter(lookup)
         return qs
     
-    def searchThisMonth(self, user=None):
-        end_date = date.today()
-        start_date = end_date + relativedelta(months=-1)
+    def searchByYear(self, user=None, anchor_date=date.today()):
+        start_date = anchor_date + relativedelta(month=1) + relativedelta(day=1)
+        end_date = start_date + relativedelta(years=1) + relativedelta(seconds=-1)
         lookup = Q(date__range = [start_date, end_date])
         qs = self.filter(lookup)
         if user is not None:
             qs = self.filter(user=user).filter(lookup)
         return qs
-
-    def searchToday(self, user=None):
-        end_date = date.today()
-        start_date = end_date + relativedelta(days=-1)
+    
+    def searchByMonth(self, user=None, anchor_date=date.today()):
+        start_date = anchor_date + relativedelta(day=1)
+        end_date = start_date + relativedelta(months=1) + relativedelta(seconds=-1)
         lookup = Q(date__range = [start_date, end_date])
         qs = self.filter(lookup)
         if user is not None:
             qs = self.filter(user=user).filter(lookup)
         return qs
 
+    def searchByDay(self, user=None, anchor_date=date.today()):
+        lookup = Q(date = anchor_date)
+        qs = self.filter(lookup)
+        if user is not None:
+            qs = self.filter(user=user).filter(lookup)
+        return qs
+
 
 class BillManager(models.Manager):