0

私が実行しているSQLクエリは次のとおりです。

string theQuery = "UPDATE readings SET chng = 1, time = FROM_UNIXTIME(";
theQuery += boost::lexical_cast<string>(ss.time);
theQuery += ") WHERE id = 1;";

ss.time は、1970 年 1 月 1 日からの秒数を記録する uint32_t です。値「3586767203」を FROM_UNIXTIME (デバイスの時間値) の括弧に入れようとすると、時間フィールドが NULL に更新されます。小さい数値を入力すると、時間フィールドが正常に更新されます。

有効な時刻を入力しているのに NULL に更新されるのはなぜですか??

4

1 に答える 1

0

UNIXTIME の制限を超えました。時間はエポック (1970 年 1 月 1 日) の後の秒数の符号付き 32 ビット整数として格納され、エポックの 2^31 秒後は「Tue, 19 Jan 2038 03:14:08 GMT」です。

この問題の説明については、http://en.wikipedia.org/wiki/Year_2038_problemを参照してください。

于 2013-10-01T15:25:20.757 に答える