【问题标题】:c++ localtime to mysql datetimeC++ 本地时间到 mysql 日期时间
【发布时间】:2013-09-27 14:35:16
【问题描述】:

我有一个自 1970 年 1 月 1 日以来记录秒数的 c++ 时间双倍。

我想转换这个双精度并将其存储在 MySQL 数据库中,所以这是我首先将其转换为日期时间格式的代码:*注意:ss.time 是双精度..

/* do the time conversion */
time_t rawtime;
struct tm * timeinfo;
rawtime = (time_t)ss.time;
timeinfo = localtime(&rawtime);

此代码将其转换为以下格式:Thu Jul 24 05:45:07 1947

然后我尝试将其写入 MySQL 数据库,如下所示:

string theQuery = "UPDATE readings SET chng = 1, time = CAST('";
theQuery += boost::lexical_cast<string>(asctime(timeinfo));
theQuery += "' AS DATETIME) WHERE id = 1";

它不起作用,而是将表中的时间 DATETIME 变量更新为 NULL。

谁能告诉我如何进行正确的转换和更新 SQL 表?

【问题讨论】:

    标签: c++ mysql datetime


    【解决方案1】:

    您的 c++ double 只是一个标准的 Unix 时间戳,MySQL 可以使用其 FROM_UNIXTIME 函数对其进行转换:

    UDPATE ... SET ... time=FROM_UNIXTIME(rawtime)
    

    【讨论】:

    • 由于某些原因,当我尝试使用 FROM_UNIXTIME() 进行更新并将 3586767203 放入括号中时,即读取时间,它会在字段中输入 null?
    • mysql 只支持 32 位 unix time_t,2038 年初达到最大值。你的时间戳是 2083 年 8 月,远远超出限制。
    猜你喜欢
    • 2014-05-31
    • 2012-10-29
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2015-01-14
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多