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 
); 

そして私はタイプstd::time_tのC++変数にacquisitionDateから値を保存しようとしています。

ウェブ検索の結果、私はMySQLの文でUNIX_TIMESTAMPを使う必要があることを知りました。しかし、実際の使用方法は分かりませんでした。私は、クエリを生成し、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->??? 
} 

に実際のフィールド値を取得する方法を理解していませんステップ。私を助けてください。 ありがとうございます!

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

またはSQLステートメントは、フィールドの名前を変更できます:

答えて

0

を投げ、私もでフィールドの出力にアクセスすることが可能であることを理解

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

関連する問題