diff --git a/backend/app/crud.py b/backend/app/crud.py
index 32944e338389361464f013d5b0d9c5a396817e63..3320b942fab97d57ba5744b821afa1222ef92689 100644
--- a/backend/app/crud.py
+++ b/backend/app/crud.py
@@ -1,3 +1,4 @@
+import datetime
 from sqlalchemy.orm import Session
 import secrets
 
@@ -55,6 +56,8 @@ def get_sessions(db: Session, user: schemas.User, skip: int = 0, limit: int = 10
         db.query(models.Session)
         .filter(models.Session.users.any(models.User.id == user.id))
         .filter(models.Session.is_active or user.type < 2)
+        .filter(models.Session.end_time <= datetime.datetime.now())
+        .filter(models.Session.start_time >= datetime.datetime.now())
         .offset(skip)
         .limit(limit)
         .all()
diff --git a/frontend/src/lib/utils/date.ts b/frontend/src/lib/utils/date.ts
index c50330e67845d389ef88dc94e78f7b8c13922cfe..6a1f777c1c8f9f71362da46a6240e4452730c493 100644
--- a/frontend/src/lib/utils/date.ts
+++ b/frontend/src/lib/utils/date.ts
@@ -64,32 +64,40 @@ export function displayTime(date: Date): string {
 
 	const now = new Date();
 
-	if (now.getTime() - date.getTime() < 1000 * 60 * 60) {
-		if (now.getTime() - date.getTime() < 1000 * 60) {
-			const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);
+	if (now.getDate() - date.getDate() < 1000 * 60 * 60 * 24) {
+		if (now.getTime() - date.getTime() < 1000 * 60 * 60) {
+			if (now.getTime() - date.getTime() < 1000 * 60) {
+				const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);
 
-			if (seconds === 0) return 'now';
+				if (seconds === 0) return 'now';
 
-			return seconds + 's';
+				return seconds + 's';
+			}
+
+			const minutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60));
+
+			return minutes + 'm';
 		}
 
-		const minutes = Math.floor((now.getTime() - date.getTime()) / (1000 * 60));
+		const hours = date.getHours().toString().padStart(2, '0');
+		const minutes = date.getMinutes().toString().padStart(2, '0');
 
-		return minutes + 'm';
+		return hours + ':' + minutes;
 	}
 
-	const hours = date.getHours().toString().padStart(2, '0');
-	const minutes = date.getMinutes().toString().padStart(2, '0');
+	const days = Math.floor((now.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
 
-	return hours + ':' + minutes;
+	return days + 'd';
 }
 
-export function displayDuration(start: Date, end: Date): string {
+export function displayDuration(start: Date, end: Date): string | null {
 	const duration = end.getTime() - start.getTime();
 
 	const hours = Math.floor(duration / (1000 * 60 * 60));
 	const minutes = Math.floor((duration % (1000 * 60 * 60)) / (1000 * 60));
 
+	if (hours < 0 || minutes < 0) return null;
+
 	if (hours === 0) return minutes + 'm';
 	else return hours + 'h ' + minutes + 'm';
 }
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
index c225b3b2058c4ebe007342833790defd843e44b9..37319a2ae0325335ba6d8dce6e70afca87baa176 100644
--- a/frontend/src/routes/+page.svelte
+++ b/frontend/src/routes/+page.svelte
@@ -60,17 +60,23 @@
 			</thead>
 			<tbody>
 				{#each $sessions.sort((a, b) => a.created_at.getTime() - b.created_at.getTime()) as session (session.id)}
+					{@const isHidden =
+						!session.is_active || session.end_time < new Date() || session.start_time > new Date()}
 					<tr
 						on:click={() => (window.location.href = '/session?id=' + session.id)}
 						tabindex="0"
 						class="odd:bg-white even:bg-gray-100 text-center hover:cursor-pointer"
-						class:text-gray-500={!session.is_active}
+						class:text-gray-500={isHidden}
 					>
-						<td class="py-3 px-6" class:line-through={!session.is_active}>{session.id}</td>
-						<td class="py-3 px-6" class:line-through={!session.is_active}
-							>{displayDuration(new Date(), session.end_time)}</td
-						>
-						<td class="py-3 px-6" class:line-through={!session.is_active}>{session.usersList()}</td>
+						<td class="py-3 px-6" class:line-through={isHidden}>{session.id}</td>
+						<td class="py-3 px-6" class:line-through={isHidden}>
+							{#if session.end_time < new Date()}
+								{$_('home.sessionEnded')}
+							{:else}
+								{displayDuration(new Date(), session.end_time)}
+							{/if}
+						</td>
+						<td class="py-3 px-6" class:line-through={isHidden}>{session.usersList()}</td>
 
 						{#if JWTSession.user()?.is_tutor}
 							<td class="py-3 px-6">
diff --git a/frontend/static/lang/fr.json b/frontend/static/lang/fr.json
index d826e6f2315bed2ca615683313602946d1e99be7..e66c6fbfe29cc94b18f340b90deed74caecb786c 100644
--- a/frontend/static/lang/fr.json
+++ b/frontend/static/lang/fr.json
@@ -19,7 +19,8 @@
 		"remainingDuration": "Durée restante",
 		"nickname": "Pseudo",
 		"learningLanguage": "Langue d'apprentissage",
-		"confirm": "Confirmer"
+		"confirm": "Confirmer",
+		"sessionEnded": "Terminée"
 	},
 	"login": {
 		"email": "Email",