### 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.
if self.state == DagRunState.RUNNING:
            return
        if self.start_date is None:
            self.log.warning("Failed to record duration of %s: start_date is not set.", self)
            return
        if self.end_date is None:
            self.log.warning("Failed to record duration of %s: end_date is not set.", self)
            return
        duration = self.end_date - self.start_date
        timer_params = {"dt": duration, "tags": self.stats_tags}
        Stats.timing(f"dagrun.duration.{self.state.value}.{self.dag_id}", **timer_params)
        Stats.timing(f"dagrun.duration.{self.state.value}", **timer_params)
    @provide_session
    def verify_integrity(self, *, session: Session = NEW_SESSION) -> None: