### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
def _clean(self):
        clear_db_dags()
        clear_db_datasets()
        clear_db_runs()
    def setup_method(self):
        self._clean()
    def teardown_method(self):
        self._clean()
    def test_dags_needing_dagruns_not_too_early(self):
        dag = DAG(dag_id="far_future_dag", start_date=timezone.datetime(2038, 1, 1))
        EmptyOperator(task_id="dummy", dag=dag, owner="airflow")
        session = settings.Session()
        orm_dag = DagModel(
            dag_id=dag.dag_id,
            max_active_tasks=1,
            has_task_concurrency_limits=False,
            next_dagrun=dag.start_date,
            next_dagrun_create_after=timezone.datetime(2038, 1, 2),
            is_active=True,
        )
        session.add(orm_dag)
        session.flush()
        query, _ = DagModel.dags_needing_dagruns(session)
        dag_models = query.all()
        assert dag_models == []
        session.rollback()
        session.close()
    def test_dags_needing_dagruns_datasets(self, dag_maker, session):