### Description

In Airflow UI. If we go to Browse --> DAG Runs, then DAG Runs view will be displayed.

Table contains a lot of insightful values likes DAG execution date, Start date, end date, Dag config etc

Request to add DAG duration column in the same table.
DAG Duration i.e. DAG end_date timestamp  - DAG start_date timestamp

### Use case/motivation

Analytics purpose of knowing DAG duration at all DAGs level. So that I can easily find out which DAG  have least and max duration.

### Related issues

Checked open issues. There aren't any

### Are you willing to submit a 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/www/views.py
(permissions.ACTION_CAN_READ, permissions.RESOURCE_TASK_INSTANCE),
        ]
    )
    @action_logging
    @provide_session
    def task(self, session):
        """Retrieve task."""
        dag_id = request.args.get('dag_id')
        task_id = request.args.get('task_id')
        execution_date = request.args.get('execution_date')
        dttm = timezone.parse(execution_date)
        form = DateTimeForm(data={'execution_date': dttm})
        root = request.args.get('root', '')
        dag = current_app.dag_bag.get_dag(dag_id)
        if not dag or task_id not in dag.task_ids:
            flash(f"Task [{dag_id}.{task_id}] doesn't seem to exist at the moment", "error")
            return redirect(url_for('Airflow.index'))
        task = copy.copy(dag.get_task(task_id))
        task.resolve_template_files()
        ti: Optional[TaskInstance] = (
            session.query(TaskInstance)
            .options(
                
                
                
                joinedload(TaskInstance.queued_by_job, innerjoin=False),
                joinedload(TaskInstance.trigger, innerjoin=False),
            )
            .join(TaskInstance.dag_run)
            .filter(