### 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
DagRun.execution_date == dttm,
                TaskInstance.dag_id == dag_id,
                TaskInstance.task_id == task_id,
            )
            .one_or_none()
        )
        if ti is None:
            ti_attrs: Optional[List[Tuple[str, Any]]] = None
        else:
            ti.refresh_from_task(task)
            all_ti_attrs = ((name, getattr(ti, name)) for name in dir(ti) if not name.startswith("_"))
            ti_attrs = sorted((name, attr) for name, attr in all_ti_attrs if not callable(attr))
        attr_renderers = wwwutils.get_attr_renderer()
        task_attrs = [
            (attr_name, attr)
            for attr_name, attr in (
                (attr_name, getattr(task, attr_name))
                for attr_name in dir(task)
                if not attr_name.startswith("_") and attr_name not in attr_renderers
            )
            if not callable(attr)
        ]
        
        special_attrs_rendered = {
            attr_name: renderer(getattr(task, attr_name))
            for attr_name, renderer in attr_renderers.items()
            if hasattr(task, attr_name)
        }
        no_failed_deps_result = [
            (