diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
index d35d7ceacb0a1d7ac9463e4062a1f6bce4c31e72..b4907d6c2fcafd310a964c49cc51db7eac4d5071 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSearchSpecifications.java
@@ -89,7 +89,16 @@ public class TransactionSearchSpecifications
 
 			query.orderBy(builder.desc(transaction.get(Transaction_.date)));
 			query.distinct(true);
-			return builder.and(accountStatePredicate, predicatesCombined);
+
+			final Predicate allPredicates = builder.and(accountStatePredicate, predicatesCombined);
+
+			if(search.getStartDate() != null && search.getEndDate() != null)
+			{
+				final Predicate dateConstraint = builder.between(transaction.get(Transaction_.date), search.getStartDate(), search.getEndDate());
+				return builder.and(dateConstraint, allPredicates);
+			}
+
+			return allPredicates;
 		};
 	}
 
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
index 088e0778db02b09d263368a18d9db5e010603b7f..2315d8ae21af618cec0439c4ab4651d6d7406d3b 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionSearchSpecificationsTest.java
@@ -105,7 +105,7 @@ class TransactionSearchSpecificationsTest
 		transaction1.setName("Test");
 		transaction1.setAmount(200);
 		transaction1.setDescription("Random Whatever");
-		transaction1.setDate(LocalDate.of(2018, 10, 3));
+		transaction1.setDate(LocalDate.of(2017, 10, 3));
 		transaction1.setCategory(category1);
 		transaction1.setAccount(account);
 		ArrayList<Tag> tags = new ArrayList<>();
@@ -161,7 +161,7 @@ class TransactionSearchSpecificationsTest
 		transactionWithMultipleTags = new Transaction();
 		transactionWithMultipleTags.setName("I am the TagMaster");
 		transactionWithMultipleTags.setAmount(-525);
-		transactionWithMultipleTags.setDate(LocalDate.of(2018, 11, 3));
+		transactionWithMultipleTags.setDate(LocalDate.of(2022, 11, 3));
 		transactionWithMultipleTags.setCategory(category1);
 		transactionWithMultipleTags.setAccount(account);
 		transactionWithMultipleTags.setTags(List.of(tag1, tag2));
@@ -335,4 +335,15 @@ class TransactionSearchSpecificationsTest
 		assertThat(results).hasSize(1)
 				.contains(transactionWithMultipleTags);
 	}
+
+	@Test
+	void getMatches_OnlyInDateRange()
+	{
+		Search search = new Search("", true, true, true, true, true, 0, LocalDate.of(2018, 1, 1), LocalDate.of(2019, 1, 1));
+		Specification spec = TransactionSearchSpecifications.withDynamicQuery(search);
+
+		List<Transaction> results = transactionRepository.findAll(spec);
+		assertThat(results).hasSize(4)
+				.contains(transaction2, transferTransaction, repeatingTransaction, transactionFromHiddenAccount);
+	}
 }
\ No newline at end of file