我目前正在尝试从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