diff --git a/testrail_bot/control/celery_tasks/testrail_pipeline.py b/testrail_bot/control/celery_tasks/testrail_pipeline.py
index f1e4bf0..d90f5e7 100644
--- a/testrail_bot/control/celery_tasks/testrail_pipeline.py
+++ b/testrail_bot/control/celery_tasks/testrail_pipeline.py
@@ -92,6 +92,7 @@
         plan_name: str,
         test_pattern: str,
         created_by_id: int,
+        created_after: int,
         created_before: int,
         run_name: str,
         text_filters: dict,
@@ -106,7 +107,9 @@
         :param plan_name: The name of the test plan to search within
         :param test_pattern: A pattern for filtering test runs
         :param created_by_id: The ID of the user who created the test plan
-        :param created_before: The date (timestamp) before which the test
+        :param created_after: The date (created_after) after which the test
+        plan was created
+        :param created_before: The date (created_before) before which the test
         plan was created
         :param run_name: The name of the test run
         :param text_filters: A dictionary of text filters to apply when
@@ -118,7 +121,8 @@
         """
     end_lookup_date = dt.strptime(
         f"{created_before} 23:59:59", "%Y-%m-%d %H:%M:%S")
-    start_lookup_date = end_lookup_date + timedelta(days=-3 * 30)
+    start_lookup_date = dt.strptime(
+        f"{created_after} 00:00:00", "%Y-%m-%d %H:%M:%S")
     filters = {
         "created_by": created_by_id,
         "created_before": int(dt.timestamp(end_lookup_date)),
diff --git a/testrail_bot/control/forms.py b/testrail_bot/control/forms.py
index a7f28bb..0ad6c12 100644
--- a/testrail_bot/control/forms.py
+++ b/testrail_bot/control/forms.py
@@ -6,7 +6,9 @@
 class TestRunForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields["timestamp"].widget = forms.SelectDateWidget(years=[
+        self.fields["created_after"].widget = forms.SelectDateWidget(years=[
+            date.today().year + i for i in range(-3, 5)])
+        self.fields["created_before"].widget = forms.SelectDateWidget(years=[
             date.today().year + i for i in range(-3, 5)])
     class Meta:
         model = TestRailTestRun
@@ -23,10 +25,14 @@
             "uuid_filter": "Mask all UUID with xxxx",
             "filter_last_traceback": "Use only traceback to "
                                      "compare comments",
-            "timestamp": "Search for test plans created before this date"
+            "created_after": "Search in period from",
+            "created_before": "till",
+
         }
         help_texts = {
             "filter_func": "Leave blank if not used",
+            "created_before": "at 23:59:59",
+            "created_after": "at 00:00:00",
         }
 
 
diff --git a/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py b/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py
new file mode 100644
index 0000000..aee1b1f
--- /dev/null
+++ b/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py
@@ -0,0 +1,24 @@
+# Generated by Django 4.2.7 on 2023-11-28 14:07
+
+import datetime
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('control', '0003_suitepassrate_diffofsuitespassrates'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='testrailtestrun',
+            old_name='timestamp',
+            new_name='created_before',
+        ),
+        migrations.AddField(
+            model_name='testrailtestrun',
+            name='created_after',
+            field=models.DateField(default=datetime.date(2023, 8, 30)),
+        ),
+    ]
diff --git a/testrail_bot/control/models.py b/testrail_bot/control/models.py
index 0956b1a..94bade9 100644
--- a/testrail_bot/control/models.py
+++ b/testrail_bot/control/models.py
@@ -43,7 +43,9 @@
     ip_filter = models.BooleanField(default=True)
     uuid_filter = models.BooleanField(default=True)
     filter_last_traceback = models.BooleanField(default=False)
-    timestamp = models.DateField(default=datetime.date.today())
+    created_before = models.DateField(default=datetime.date.today())
+    created_after = models.DateField(default=datetime.date.today() +
+                                             datetime.timedelta(days=-3*30))
 
     @property
     def text_filters(self):
@@ -58,7 +60,8 @@
     def testrail_filters(self):
         return {
             "created_by_id": self.created_by_id,
-            "created_before": self.timestamp,
+            "created_after": self.created_after,
+            "created_before": self.created_before,
             "run_name": self.run_name,
             "plan_name": self.plan_name,
             "test_pattern": self.test_pattern,
diff --git a/testrail_bot/control/templates/control/update_run.html b/testrail_bot/control/templates/control/update_run.html
index 31c634a..3082fec 100644
--- a/testrail_bot/control/templates/control/update_run.html
+++ b/testrail_bot/control/templates/control/update_run.html
@@ -64,11 +64,14 @@
         <div class="col-xs-8 small">
           User to id list: <ul><li>os-qa-bot = <code>109</code></li></ul>
         </div>
-        <div class="col-xs-8">
-          {% bootstrap_field form.timestamp size='sm' %}
+        <div class="col-sm-auto mx-3">
+          {% bootstrap_field form.created_after size='sm' %}
+        </div>
+        <div class="col-sm-auto mx-3">
+          {% bootstrap_field form.created_before size='sm' %}
         </div>
       </div>
-      <div class=" p-3 mt-5 bg-light bg-gradient">
+      <div class="p-3 mt-5 bg-light bg-gradient">
         <h5>Text filters</h5>
         <div class="col-md-5">
           {% bootstrap_field form.ip_filter  size='sm'%}
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index 0ebdf41..7a34327 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -45,7 +45,9 @@
     else:
         form = forms.TestRunForm()
 
-    form.fields["timestamp"].initial = datetime.date.today()
+    form.fields["created_after"].initial = datetime.date.today() + \
+                                           datetime.timedelta(days=-3 * 30)
+    form.fields["created_before"].initial = datetime.date.today()
     return render(request, "control/update_run.html", {"form": form})
 
 
