我有一些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());
答案 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文档中的更多信息。
以上只是一些建议,我没有在没有期望的环境的情况下进行任何测试和验证,请在进行任何实施之前对其进行彻底的测试。