diff --git a/changelog.d/16165.misc b/changelog.d/16165.misc
new file mode 100644
index 0000000000000000000000000000000000000000..b4d514d249cc65c71282a4e670df2ac792cb266e
--- /dev/null
+++ b/changelog.d/16165.misc
@@ -0,0 +1 @@
+Task scheduler: mark task as active if we are scheduling as soon as possible.
diff --git a/synapse/storage/databases/main/task_scheduler.py b/synapse/storage/databases/main/task_scheduler.py
index 1fb3180c3c96d86ba2743cc8291f007588affa68..9ab120eea9ca5f326f9470c6bdf4c4300a397d22 100644
--- a/synapse/storage/databases/main/task_scheduler.py
+++ b/synapse/storage/databases/main/task_scheduler.py
@@ -92,7 +92,7 @@ class TaskSchedulerWorkerStore(SQLBaseStore):
             if clauses:
                 sql = sql + " WHERE " + " AND ".join(clauses)
 
-            sql = sql + "ORDER BY timestamp"
+            sql = sql + " ORDER BY timestamp"
 
             txn.execute(sql, args)
             return self.db_pool.cursor_to_dict(txn)
diff --git a/synapse/util/task_scheduler.py b/synapse/util/task_scheduler.py
index 773a8327f633a0f5c72d0e52f52f9cdc0d0707b0..4aea64b338b444cfad3c6c60be2182bfec62e765 100644
--- a/synapse/util/task_scheduler.py
+++ b/synapse/util/task_scheduler.py
@@ -154,13 +154,15 @@ class TaskScheduler:
                 f"No function associated with action {action} of the scheduled task"
             )
 
+        status = TaskStatus.SCHEDULED
         if timestamp is None or timestamp < self._clock.time_msec():
             timestamp = self._clock.time_msec()
+            status = TaskStatus.ACTIVE
 
         task = ScheduledTask(
             random_string(16),
             action,
-            TaskStatus.SCHEDULED,
+            status,
             timestamp,
             resource_id,
             params,