### Apache Airflow version

2.1.3 (latest released)

### Operating System

ubuntu, macos

### Versions of Apache Airflow Providers

apache-airflow-providers-amazon==1.4.0
apache-airflow-providers-ftp==1.1.0
apache-airflow-providers-http==1.1.1
apache-airflow-providers-imap==1.0.1
apache-airflow-providers-postgres==1.0.2
apache-airflow-providers-slack==4.0.0
apache-airflow-providers-sqlite==1.0.2

### Deployment

Virtualenv installation

### Deployment details

_No response_

### What happened

We are using TriggerDagRunOperator in the end of DAG to retrigger current DAG:

`TriggerDagRunOperator(task_id=‘trigger_task’, trigger_dag_id=‘current_dag’)`

Everything works fine, except we have missing duration in UI and ​warnings in scheduler :

`[2021-09-07 15:33:12,890] {dagrun.py:604} WARNING - Failed to record duration of <DagRun current_dag @ 2021-09-07 12:32:17.035471+00:00: manual__2021-09-07T12:32:16.956461+00:00, externally triggered: True>: start_date is not set.`

And in web UI we can't see duration in TreeView and DAG has no started and duration values. 


### What you expected to happen

Correct behaviour with start date and duration metrics in web UI.

### How to reproduce

```
import pendulum
import pytz
from airflow import DAG
from airflow.operators.dummy import DummyOperator
from airflow.operators.trigger_dagrun import TriggerDagRunOperator


with DAG(
        start_date=pendulum.datetime(year=2021, month=7, day=1).astimezone(pytz.utc),
        schedule_interval='@daily',
        default_args={},
        max_active_runs=1,
        dag_id='current_dag'
) as dag:

    step1 = DummyOperator(task_id='dummy_task')

    trigger_self = TriggerDagRunOperator(task_id='trigger_self', trigger_dag_id='current_dag')

    step1 >> trigger_self
```


`[2021-09-08 12:53:35,094] {dagrun.py:604} WARNING - Failed to record duration of <DagRun current_dag @ 2021-01-04 03:00:11+00:00: backfill__2021-01-04T03:00:11+00:00, externally triggered: False>: start_date is not set.`


### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/api/common/experimental/trigger_dag.py
execution_date = execution_date.replace(microsecond=0)
    if dag.default_args and 'start_date' in dag.default_args:
        min_dag_start_date = dag.default_args["start_date"]
        if min_dag_start_date and execution_date < min_dag_start_date:
            raise ValueError(
                "The execution_date [{}] should be >= start_date [{}] from DAG's default_args".format(
                    execution_date.isoformat(), min_dag_start_date.isoformat()
                )
            )
    run_id = run_id or DagRun.generate_run_id(DagRunType.MANUAL, execution_date)
    dag_run = DagRun.find(dag_id=dag_id, run_id=run_id)
    if dag_run:
        raise DagRunAlreadyExists(f"Run id {run_id} already exists for dag id {dag_id}")
    run_conf = None
    if conf:
        run_conf = conf if isinstance(conf, dict) else json.loads(conf)
    triggers = []
    dags_to_trigger = [dag] + dag.subdags
    for _dag in dags_to_trigger:
        trigger = _dag.create_dagrun(
            run_id=run_id,
            execution_date=execution_date,
            state=State.RUNNING,
            conf=run_conf,
            external_trigger=True,
            dag_hash=dag_bag.dags_hash.get(dag_id),
        )
        triggers.append(trigger)
    return triggers
def trigger_dag(