C ++ сохраняет измененную временную метку MySQL как строку - PullRequest
1 голос
/ 28 января 2012

В настоящее время я пытаюсь получить значение ключа 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, Connector C ++?

1 Ответ

0 голосов
/ 28 января 2012

Попробуйте назвать имя в вашем SQL, указав псевдоним:

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

Затем используйте "last_login_str" для получения значения.

...