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

{
        const auto * array_type = typeid_cast<const DataTypeArray *>(data_type.get());
        const auto & nested = array_type->getNestedType();
        const auto & array = array_field.get<Array>();
        if (!isArray(nested))
        {
            writeText(clickhouseToPostgresArray(array, data_type), ostr);
            return;
        }
        writeChar('{', ostr);
        const auto * nested_array_type = typeid_cast<const DataTypeArray *>(nested.get());
        for (auto iter = array.begin(); iter != array.end(); ++iter)
        {
            if (iter != array.begin())
                writeText(", ", ostr);
            if (!isArray(nested_array_type->getNestedType()))
            {
                writeText(clickhouseToPostgresArray(iter->get<Array>(), nested), ostr);
            }
            else
            {
                parseArray(*iter, nested, ostr);
            }
        }
        writeChar('}', ostr);
    }
    
    
    static std::string clickhouseToPostgresArray(const Array & array_field, const DataTypePtr & data_type)