C++ MySQL FROM_UNIXTIME命令未写入

C++ MySQL FROM_UNIXTIME命令未写入,c++,mysql,sql,C++,Mysql,Sql,以下是我正在运行的SQL查询: string theQuery = "UPDATE readings SET chng = 1, time = FROM_UNIXTIME("; theQuery += boost::lexical_cast<string>(ss.time); theQuery += ") WHERE id = 1;"; string theQuery=“更新读数集chng=1,time=FROM_UNIXTIME(”; theQuery+=boost::词法转换(

以下是我正在运行的SQL查询:

string theQuery = "UPDATE readings SET chng = 1, time = FROM_UNIXTIME(";
theQuery += boost::lexical_cast<string>(ss.time);
theQuery += ") WHERE id = 1;";
string theQuery=“更新读数集chng=1,time=FROM_UNIXTIME(”;
theQuery+=boost::词法转换(ss.time);
查询+=”),其中id=1;“;
ss.time是一个uint32,记录自1970年1月1日以来的秒数。当我尝试将值“3586767203”放入FROM_UNIXTIME的括号中时,它会将我的时间字段更新为NULL。如果我输入一个较小的数字,它会很好地更新时间字段


如果我输入了有效时间,为什么会更新为NULL???

您已经超过了UnixtTime的限制。3586767203是“Sun,2083年8月29日12:13:23 GMT”,UNIXTIME不能大于解析为“2038-01-18 22:14:07”的日期(来自UNIXTIME(2147483647)),因为时间存储为纪元(1970年1月1日)后秒的有符号32位整数,纪元后2^31秒为“Tue,2038年1月19日03:14:08 GMT”


有关此问题的解释,请参阅。

已解释您的问题:这不是编写此字符串的最佳方法。溪流会有帮助吗?他们应该做隐式转换。另外,3586767203是2083年8月29日,这远远超出了32位unixtime的范围。