diff --git a/program/models.py b/program/models.py
index 25c5e4c53ff06d4f583e7715642843fab849058e..a4a83309288cc6b87bf2f6147d089784064e05f5 100644
--- a/program/models.py
+++ b/program/models.py
@@ -28,7 +28,7 @@ from versatileimagefield.fields import PPOIField, VersatileImageField
 from django.contrib.auth.models import User
 from django.core.exceptions import ObjectDoesNotExist
 from django.db import models
-from django.db.models import Q
+from django.db.models import Q, QuerySet
 from django.forms.models import model_to_dict
 from django.utils import timezone
 from django.utils.translation import gettext_lazy as _
@@ -1062,11 +1062,17 @@ class TimeSlotManager(models.Manager):
         )
 
     @staticmethod
-    def get_timerange_timeslots(start: datetime, end: datetime):
-        """get the timeslots in the timerange between start and end"""
+    def get_timerange_timeslots(start_timerange: datetime, end_timerange: datetime) -> QuerySet:
+        """get the timeslots between start_timerange and end_timerange"""
+
         return TimeSlot.objects.filter(
-            Q(start__lte=start, end__gte=start) | Q(start__gt=start, start__lt=end)
-        ).exclude(end=start)
+            # start before start_timerange, end after start_timerange
+            Q(start__lt=start_timerange, end__gt=start_timerange)
+            # start after/at start_timerange, end before/at end_timerange
+            | Q(start__gte=start_timerange, end__lte=end_timerange)
+            # start before end_timerange, end after/at end_timerange
+            | Q(start__lt=end_timerange, end__gte=end_timerange)
+        )
 
     @staticmethod
     def get_colliding_timeslots(timeslot):