### Discussed in https://github.com/apache/airflow/discussions/33345

<div type='discussions-op-text'>

<sup>Originally posted by **vuphamcs** August 11, 2023</sup>
### Description

Is there a variable similar to `prev_start_date_success` but for the previous DAG run’s completion date? The value I’m hoping to retrieve to use within the next DAG run is `2023-08-10 16:04:30`

![image](https://github.com/apache/airflow/assets/1600760/9e2af349-4c3e-47e1-8a1a-9d8827b56f57)


### Use case/motivation

One particular use case is to help guarantee that the next DAG run only queries data that was inserted during the existing DAG run, and not the past DAG run.

```python
prev_ts = context['prev_end_date_success']

sql = f"SELECT * FROM results WHERE created_at > {context['prev_end_date_success']}"
```

### Related issues

_No response_

### 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)
</div>
)
    if ti:
        
        task_instance.start_date = ti.start_date
        task_instance.end_date = ti.end_date
        task_instance.duration = ti.duration
        task_instance.state = ti.state
        
        task_instance.try_number = ti.try_number
        task_instance.max_tries = ti.max_tries
        task_instance.hostname = ti.hostname
        task_instance.unixname = ti.unixname
        task_instance.job_id = ti.job_id
        task_instance.pool = ti.pool
        task_instance.pool_slots = ti.pool_slots or 1
        task_instance.queue = ti.queue
        task_instance.priority_weight = ti.priority_weight
        task_instance.operator = ti.operator
        task_instance.custom_operator_name = ti.custom_operator_name
        task_instance.queued_dttm = ti.queued_dttm
        task_instance.queued_by_job_id = ti.queued_by_job_id
        task_instance.pid = ti.pid
        task_instance.executor_config = ti.executor_config
        task_instance.external_executor_id = ti.external_executor_id
        task_instance.trigger_id = ti.trigger_id
        task_instance.next_method = ti.next_method
        task_instance.next_kwargs = ti.next_kwargs
    else:
        task_instance.state = None
def _set_duration(*, task_instance: TaskInstance | TaskInstancePydantic) -> None: