UNIX_TIMESTAMP()的MySQL错误1690(BIGINT UNSIGNED value超出范围)
我收到错误1690-BIGINT无符号值超出此查询的范围:UNIX_TIMESTAMP()的MySQL错误1690(BIGINT UNSIGNED value超出范围),mysql,Mysql,我收到错误1690-BIGINT无符号值超出此查询的范围: SELECT * FROM `user` WHERE ROUND( ( UNIX_TIMESTAMP() - `expire` ) / 86400 ) = 7 我在Stackoverflow中读到了有关此错误的信息,并看到了一些有关cast的注释,但我无法将它们应用于此查询。Schema 查询 所以,尚未过期但将在1周内过期的内容,表中的第二个值将给出负结果,因此您将得到一个错误 若要在您的情况下使负面结果成为可能,请使用before
SELECT * FROM `user`
WHERE ROUND( ( UNIX_TIMESTAMP() - `expire` ) / 86400 ) = 7
我在Stackoverflow中读到了有关此错误的信息,并看到了一些有关cast的注释,但我无法将它们应用于此查询。Schema
查询
所以,尚未过期但将在1周内过期的内容,表中的第二个值将给出负结果,因此您将得到一个错误 若要在您的情况下使负面结果成为可能,请使用before query
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
你想要实现什么?检查表中的日期是否比当前日期早一周?我想查找7天后过期的记录。@Drew yes,给您:
select id,expire,seconds from
( select id,expire,TIME_TO_SEC(TIMEDIFF(from_unixtime(expire), now())) as seconds
from user
) xDerived
where seconds>0 and seconds<604800; -- # of seconds in a week
+----+------------+---------+
| id | expire | seconds |
+----+------------+---------+
| 4 | 1449400882 | 2870 |
+----+------------+---------+
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';