我目前正在嘗試從MySQL數據庫獲取DATETIME
鍵值並將其保存爲字符串。C++將修改後的MySQL時間戳存儲爲字符串
但是我不想的時候要在平時的MySQL格式YYYY-MM-DD HH:MM:SS
而是在12小時格式是這樣的:HH:MM:SS AM/PM
我已經想通了如何在MySQL數據庫中「轉換」時間格式我所需的格式,通過使用這樣的:
sql::ResultSet* time = database->Query("SELECT DATE_FORMAT(`lastLogin`, '%r') FROM `users` WHERE `user_id`='%i', id);
MySQL命令是有效的,所述查詢返回正確的時間格式(I直接在MySQL測試它)。
現在我想將結果存儲在一個char *數組中,但由於某種原因,當我嘗試將結果複製到數組中時,他總是與SQL無效命令異常一起崩潰。
time->first();
char* lastLogin = new char[50];
//here are the variants of the commands I tried, every one crashed:
strcpy(lastLogin, time->getString("lastLogin").c_str());
strcpy(lastLogin, time->getString("DATE_FORMAT(`lastLogin`, '%r')").c_str());
strcpy(lastLogin, time->getString("DATE_FORMAT(lastLogin, '%r')").c_str());
strcpy(lastLogin, time->getString(0).c_str());
有沒有人知道我在做什麼錯?或者,這甚至可以使用MySQL Connector C++?
你的'gdb'調試器告訴你什麼?你有沒有試過類似於'SELECT DATE_FORMAT('lastLogin','%r')的查詢AS lastloginr FROM users WHERE user_id ='%i''? – 2012-01-28 11:58:07
是的,我已經想出瞭解決方案。我必須將%r作爲字符串傳遞給方法調用,否則它將被解釋爲簡單的「r」。 – user1175111 2012-01-28 13:48:14
或者'%% r',因爲通常的約定是雙'%'被「擴展」爲單個... – 2012-01-28 14:59:58