### Apache Airflow version

Other Airflow 2 version

### What happened

Hi All,

When I run the below command in Airflow 2.3.4:

`airflow db clean --clean-before-timestamp '2022-09-18T00:00:00+05:30' --yes`

I receive an error within a warning which says

`[2022-09-20 10:33:30,971] {db_cleanup.py:302} WARNING - Encountered error when attempting to clean table 'rendered_task_instance_fields'.`

All other tables like `log`, `dag`, `xcom` get deleted properly. On my analysis, `rendered_task_instance_fields` was the 5th largest table by rows in the DB, so the impact of it's data size is significant.

On analyzing the table itself on PostGres 13 DB, I found that the table `rendered_task_instance_fields` has no timestamp column that records when the entry was inserted.

https://imgur.com/a/Qys2uwD

Thus, there would be no way the code can filter out older records and delete them.

### What you think should happen instead

A timestamp field needs to be added to the table `rendered_task_instance_fields` basis of which older records can be deleted.

### How to reproduce

Run the below command in airflow v2.3.4 and check the output.

`airflow db clean --clean-before-timestamp '2022-09-18T00:00:00+05:30' --yes`

### Operating System

Ubuntu 20.04 LTS

### Versions of Apache Airflow Providers

apache-airflow-providers-amazon==5.1.0
apache-airflow-providers-celery==3.0.0
apache-airflow-providers-common-sql==1.2.0
apache-airflow-providers-ftp==3.1.0
apache-airflow-providers-google==8.3.0
apache-airflow-providers-http==4.0.0
apache-airflow-providers-imap==3.0.0
apache-airflow-providers-mongo==3.0.0
apache-airflow-providers-mysql==3.2.0
apache-airflow-providers-slack==5.1.0
apache-airflow-providers-sqlite==3.2.1

### Deployment

Virtualenv installation

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] 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)

logger.debug("rows moved; purging from %s", source_table.name)
    bind = session.get_bind()
    dialect_name = bind.dialect.name
    if dialect_name == "sqlite":
        pk_cols = source_table.primary_key.columns
        delete = source_table.delete().where(
            tuple_(*pk_cols).in_(
                session.query(*[target_table.c[x.name] for x in source_table.primary_key.columns]).subquery()
            )
        )
    else:
        delete = source_table.delete().where(
            and_(col == target_table.c[col.name] for col in source_table.primary_key.columns)
        )
    logger.debug("delete statement:\n%s", delete.compile())
    session.execute(delete)
    session.commit()
    if skip_archive:
        target_table.drop()
    session.commit()
    print("Finished Performing Delete")
def _subquery_keep_last(*, recency_column, keep_last_filters, group_by_columns, max_date_colname, session):
    subquery = session.query(*group_by_columns, func.max(recency_column).label(max_date_colname))
    if keep_last_filters is not None:
        for entry in keep_last_filters:
            subquery = subquery.filter(entry)
    if group_by_columns is not None:
        subquery = subquery.group_by(*group_by_columns)
    return subquery.subquery(name="latest")
class CreateTableAs(Executable, ClauseElement):