将时代字符串保存到mysql datetime仅年/月/日,但没有小时分钟秒

时间:2019-06-19 15:10:58

标签: c++ mysql datetime

我有一些C ++代码,可将纪元字符串(从time_t对象转换)保存到MySQL数据库time列(数据类型datetime)。

C ++中的纪元时间字符串为1559333386,但是,保存到MySQL时,它仅显示日期,小时,分钟和秒都显示为零:2019-05-31 00:00:00

问题是如何将带有完整信息的纪元时间戳以year-month-day hour:minute:second格式保存到MySQL数据库?

谢谢。

代码如下:

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 个答案:

答案 0 :(得分:1)

以下是两种可能的解决方案:

一种方法是对纪元时间戳进行一些预处理,以将其格式更改为YYYY-MM-DD HH24:MI:SS,然后将其绑定到SQL语句。

在我看来,另一个有点奇怪和冒险,我在MySQL网站上的DATETIME documentation的注释部分中找到了它,方法如下:

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

有关timestamp system variable的MySQL文档中的更多信息。

以上只是一些建议,我没有在没有期望的环境的情况下进行任何测试和验证,请在进行任何实施之前对其进行彻底的测试。