c++ - MySQL FROM_UNIXTIME 命令不写入

标签 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;";

ss.time 是一个 uint32_t,记录自 1970 年 1 月 1 日以来的秒数。当我尝试将值“3586767203”放入 FROM_UNIXTIME(我设备上的时间值)的括号中时,它会更新我的时间字段为 NULL。如果我输入较小的数字,它会很好地更新时间字段。

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

最佳答案

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

参见http://en.wikipedia.org/wiki/Year_2038_problem有关此问题的解释。

关于c++ - MySQL FROM_UNIXTIME 命令不写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118960/

相关文章:

c++ - 不同字符串的.size()函数值相减

mysql - 如何获取每个不同值的所有出现,包括它在 mysql 中的数量?

php - MySQL 和 PHP - 多行或连接成 1 行 - 哪个更快?

sql - 在子查询之间的ORACLE join语句中选择顶部记录

引用类型的 C++11 成员变量, vector push_back 后的不同行为

c++ - 如何在 C++ 中的给定路径中创建目录?

c++ - 将 GCC 内联汇编 CMOV 转换为 Visual Studio 汇编器

php - 将 PHP 日期范围转换为 MYSQL 单个日期

c++ - Qt 5.8.0 firebird QSqlQuery 错误

sql - 如何处理 SSAS DMV 元数据中最大字符串长度 255