
**Describe the unexpected behaviour**
currently data format name started with `timestamp`(timestamp/timestamptz) all converted to DateTime in postgres engine, this will losing precision of millisecond and microsecond, so they should be regarded as DtateTime64 data format


**Expected behavior**

they should be regarded as DtateTime64 data format

"AND a.attnum = ANY(i.indkey) "
                "WHERE  i.indrelid = {}::regclass AND i.indisprimary", quoteString(postgres_table_name));
        table.primary_key_columns = readNamesAndTypesList(tx, postgres_table_name, query, use_nulls, true);
    }
    if (with_replica_identity_index && !table.primary_key_columns)
    {
        query = fmt::format(
            "SELECT "
            "a.attname AS column_name, " 
            "format_type(a.atttypid, a.atttypmod) as type " 
            "FROM "
            "pg_class t, "
            "pg_class i, "
            "pg_index ix, "
            "pg_attribute a "
            "WHERE "
            "t.oid = ix.indrelid "
            "and i.oid = ix.indexrelid "
            "and a.attrelid = t.oid "
            "and a.attnum = ANY(ix.indkey) "
            "and t.relkind = 'r' " 
            "and t.relname = {} " 
            "and ix.indisreplident = 't' " 
            "ORDER BY a.attname", 
        quoteString(postgres_table_name));
        table.replica_identity_columns = readNamesAndTypesList(tx, postgres_table_name, query, use_nulls, true);
    }
    return table;
}
PostgreSQLTableStructure fetchPostgreSQLTableStructure(pqxx::connection & connection, const String & postgres_table_name, bool use_nulls)