1

我目前正在尝试DATETIME从 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 命令有效且查询返回正确的时间格式(我直接在 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 连接器 C++ 实现吗?

4

1 回答 1

0

尝试在 SQL 中命名表达式,给它一个别名:

"SELECT DATE_FORMAT(`lastLogin`, '%r') as last_login_str FROM `users` WHERE `user_id`='%i'"

然后用于"last_login_str"检索值。

于 2012-01-28T11:57:50.460 回答