2016-06-29 1 views
0

Je suis coincé dans un problème et j'espère vraiment que vous pourrez m'aider. J'aime convertir un champ MySQL DATETIME en une variable C++ std::time_t. Ma base de données ressemble à ceci:Convertir MySQL Datetime en C++ std :: time_t

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

Et je tente de sauver la valeur de acquisitionDate en C++ variable de type std::time_t. Après une recherche sur le Web, j'ai appris que je devais utiliser UNIX_TIMESTAMP dans mon instruction MySQL. Cependant, je n'ai pas compris comment l'utiliser. Je peux générer une requête et recevoir un 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)); 

Mais je ne comprends pas comment je peux obtenir la valeur réelle du champ dans une std::time_t variables

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

D'une certaine façon mon cerveau ne reçoit pas cette dernière étape. Aidez-moi, s'il vous plaît. Merci beaucoup!

Répondre

0

Je compris aussi qu'il est possible d'accéder aux champs émis par:

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

Ou l'instruction SQL pourrait renommer le champ:

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

puis

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

Cependant, la coulée doit aussi être une bonne idée (après que vous avez le nom de champ correct):

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

Juste jetteras

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

+0

Merci beaucoup pour votre réponse. Casting est une bonne idée et assez facile. Cependant, j'ai compris que mon problème était de comprendre comment accéder au champ retourné. Voir ma réponse à cette question – Michael