Как преобразовать необработанные байты в строку в соединителе C ++ - PullRequest
0 голосов
/ 29 января 2020

Я использую соединитель c ++ для выполнения запроса к mysql через c ++, и все в порядке, кроме типа даты!

Когда я пытаюсь распечатать данные, полученные в результате запроса, все столбцы печатаются, кроме тех, которые находятся в типе DATE, и вместо печати значения даты они печатают <3 необработанных байта> .

Как можно напечатать это в реальном виде даты yyy-mm-dd вместо из <3 необработанных байтов>.

это мой код:

#include <iostream>
#include <mysqlx/xdevapi.h>

using namespace std;
using namespace mysqlx;

template<typename type>
void print(const list<type>& lst) noexcept
{
    for (auto it{ lst.begin() }; it != lst.end(); it++)
    {
        try
        {
            int index{ 0 };
            while (true)
                cout << (*it)[index++] << '\t';
        }
        catch (...)
        {
            cout << endl;
        }
    }
}

int main(int argc, char** argv, char** pnv)
{
    Session dbms_session{
        SessionOption::HOST, "localhost",
        SessionOption::PORT, 33060,
        SessionOption::USER, "myusername",
        SessionOption::PWD, "mypassword",
        SessionOption::DB, "classicmodels",
        SessionOption::SSL_MODE, SSLMode::DISABLED
    };
    Schema classicmodels_schema{ dbms_session.getSchema("classicmodels") };

    Table employees_table{ classicmodels_schema.getTable("employees") };
    RowResult employees_full_name{ employees_table.select("firstName", "lastName").execute() };

    list<Row> employees_full_name_result{ employees_full_name.fetchAll() };

    Table members_table{ classicmodels_schema.getTable("members") };
    Table committees_table{ classicmodels_schema.getTable("committees") };

    const char* sql_command{
        "SELECT\n"
        "customers.customerNumber,\n"
        "customers.contactLastName,\n"
        "customers.contactFirstName,\n"
        "orders.orderDate,\n"
        "orders.status\n"
        "FROM customers\n"
        "INNER JOIN orders\n"
        "USING (customerNumber);\n"
    };

    RowResult databases{ dbms_session.sql(sql_command).execute() };

    list<Row> data{ databases.fetchAll() };
    print(data);
}

и это мои результаты:

363     Young   Dorothy <3 raw bytes>   Shipped
128     Keitel  Roland  <3 raw bytes>   Shipped
181     Frick   Michael <3 raw bytes>   Shipped
121     Bergulfsen      Jonas   <3 raw bytes>   Shipped
141     Freyre  Diego   <3 raw bytes>   Shipped
145     Petersen        Jytte   <3 raw bytes>   Shipped
278     Rovelli Giovanni        <3 raw bytes>   Shipped
131     Lee     Kwai    <3 raw bytes>   Shipped
385     Cruz    Arnold  <3 raw bytes>   Shipped
486     Salazar Rosa    <3 raw bytes>   Shipped
187     Ashworth        Rachel  <3 raw bytes>   Shipped
129     Murphy  Julie   <3 raw bytes>   Shipped
144     Berglund        Christina       <3 raw bytes>   Shipped
124     Nelson  Susan   <3 raw bytes>   Shipped
172     Bertrand        Marie   <3 raw bytes>   Shipped
424     Hernandez       Maria   <3 raw bytes>   Shipped

1 Ответ

0 голосов
/ 12 февраля 2020
use below command 
select date_format(<column name with type>,'%Y-%m-%d') from <table name>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...