2016-06-29 2 views
0

Я застрял в проблеме и действительно надеюсь, что вы можете мне помочь. Мне нравится преобразовать поле MySQL DATETIME в переменную C++ std::time_t. Моя база данных выглядит следующим образом:Преобразование MySQL Datetime в C++ std :: time_t

CREATE TABLE data(
    id    INTEGER  AUTO_INCREMENT UNIQUE, 
    path   VARCHAR(1000), 
    acquisitionDate DATETIME 
); 

И я пытаюсь сохранить значение из acquisitionDate в C++ переменную типа std::time_t.

После некоторого поиска в Интернете я узнал, что должен использовать UNIX_TIMESTAMP в своем операторе MySQL. Однако я не понимал, как его использовать. Я могу генерировать запрос и получать sql::ResultSet:

std::unique_ptr<sql::Statement> stmt(mConnection->createStatement()); 

std::string query="SELECT id, path, UNIX_TIMESTAMP(acquisitionDate) FROM data WHERE id = 1"; 

std::unique_ptr<sql::ResultSet> res(stmt->executeQuery(query)); 

Но я не понимаю, как я могу получить фактическое значение поля в std::time_t переменной

if(res->next()) 
{ 
    std::time_t acquisitionDate = res->getInt("acquisitionDate"); 
    std::time_t acquisitionDate = res->??? 
} 

Как-то мой мозг не получает этот последний шаг. Пожалуйста, помогите мне. Большое спасибо!

ответ

0

Я также понял, что можно получить доступ к выходной полей:

std::time_t acquisitionDate = res->getInt("UNIX_TIMESTAMP(acquisitionDate)"); 

Или SQL оператор может переименовать поле:

SELECT UNIX_TIMESTAMP(acquisitionDate) AS foo FROM data WHERE id = 1 

, а затем

std::time_t acquisitionDate = res->getInt("foo"); 

Однако литье также должна быть хорошей идеей (после того, как у вас есть правильное имя поля):

std::time_t acquisitionDate = static_cast<std::time_t>(res->getInt("foo")); 
0

Просто брось

std::time_t acquisitionDate = (std::time_t)res->getInt("acquisitionDate");

+0

Большое спасибо за ваш ответ. Кастинг - это хорошая и простая идея. Тем не менее, я понял, что моя проблема заключается в понимании того, как получить доступ к возвращенному полю. См. Мой ответ на этот вопрос – Michael

Смежные вопросы