Сохранить строку эпохи в mysql datetime только год / месяц / дата, но без часов, минут и секунд - PullRequest
0 голосов
/ 19 июня 2019

У меня есть некоторый код C ++, который сохраняет строку эпохи (преобразованную из объекта time_t) в столбец базы данных MySQL time (тип данных datetime).

Строка времени эпохи в C ++: 1559333386, однако, при сохранении в MySQL, он показывает только дату, где час, минута и секунда показаны как ноль: 2019-05-31 00:00:00.

Вопрос в том, как сохранить метку времени эпохи с полной информацией вБаза данных MySQL в year-month-day hour:minute:second формате?

Спасибо.

Вот код:

std::time_t t = std::stof(time);
std::stringstream sstime;
sstime << std::put_time(std::gmtime(&t), "%F") << '\n';
Poco::Data::Statement sql_insert(*session);
sql_insert << "INSERT into history (uid,  time) \
               VALUES (?,?)",
               Poco::Data::Keywords::bind(uid),

               Poco::Data::Keywords::bind(sstime.str());

1 Ответ

1 голос
/ 19 июня 2019

Вот два возможных решения:

Один из них - выполнить предварительную обработку метки времени эпохи, чтобы изменить ее формат на YYYY-MM-DD HH24:MI:SS, а затем связать ее с оператором SQL.

Другой, на мой взгляд, немного странный и рискованный, я нашел его в разделе комментариев документации DATETIME на веб-сайте MySQL, вот как:

SET @@timestamp := 1559333386;
INSERT INTO history (time) VALUES (NOW());
SET @@timestamp := DEFAULT;

Подробнее об этом см. В документации MySQL для системной переменной timestamp .

Выше приведены лишь некоторые рекомендации, я не проводил никакого тестирования и валидации, не имея нужных сред, пожалуйста, тщательно протестируйте его, прежде чем внедрять где-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...