BIGINT UNSIGNED value is out of range in ‘(((unix_timestamp()) - unix_timestamp(db.order.assigned_at)) - (db.order.order_hours * 3600))’, Time: 0.003000s

    1. SELECT
    2. id,
    3. order_no,
    4. UNIX_TIMESTAMP (),
    5. UNIX_TIMESTAMP( assigned_at ),
    6. order_hours,
    7. UNIX_TIMESTAMP ()- UNIX_TIMESTAMP( assigned_at )- `order_hours` * 3600 as diff
    8. FROM
    9. db.order
    10. WHERE
    11. order_status = 'ing'
    12. -- AND
    13. -- ( `sd_account_id` = '10347' OR `employee_id` = '10347' )
    14. AND ( UNIX_TIMESTAMP ()- UNIX_TIMESTAMP( assigned_at )- `order_hours` * 3600 ) > 0
    15. LIMIT 10;

    解决问题路径 : MySQL error #1690 (BIGINT UNSIGNED value is out of range) for UNIX_TIMESTAMP()

    Your second value in table will give negative result, so you get an error. To make negative results possible in your case, use before query SET sql_mode = ‘NO_UNSIGNED_SUBTRACTION’;

    查询不能是负值, 可以使用 > 对比, 不要使用计算并 > 0