
**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

}
            else
            {
                std::tuple<std::string, std::string, std::string, uint16_t> row;
                while (stream >> row)
                {
                    auto data_type = convertPostgreSQLDataType(std::get<1>(row),
                                                               recheck_array,
                                                               use_nulls && (std::get<2>(row) == "f"), 
                                                               std::get<3>(row));
                    columns.push_back(NameAndTypePair(std::get<0>(row), data_type));
                    ++i;
                }
            }
            stream.complete();
        }
        for (const auto & i : recheck_arrays_indexes)
        {
            const auto & name_and_type = columns[i];
            
            
            pqxx::result result{tx.exec(fmt::format("SELECT array_ndims({}) FROM {} LIMIT 1", name_and_type.name, postgres_table_name))};
            auto dimensions = result[0][0].as<int>();
            
            DataTypePtr type = assert_cast<const DataTypeArray *>(name_and_type.type.get())->getNestedType();
            while (dimensions--)
                type = std::make_shared<DataTypeArray>(type);
            columns[i] = NameAndTypePair(name_and_type.name, type);
        }
    }