Php MySQL正在计算INT UNSIGNED上的负值

Php MySQL正在计算INT UNSIGNED上的负值,php,mysql,Php,Mysql,我的表中有一个start\u date\u time INT UNSIGNED列 我有一个这样的问题 ... WHERE (g.start_date_time-$currentTime) > 0 ORDER BY (g.start_date_time-$currentTime) 我得到一个错误数值超出范围:1690 BIGINT无符号值超出范围…。如果我将其设置为有符号的,当然一切正常,但我的问题是有没有办法让它保持无符号的,但无论如何计算负值(我只需要计算,不需要将它们存储在任何地方)

我的表中有一个
start\u date\u time INT UNSIGNED

我有一个这样的问题

... WHERE (g.start_date_time-$currentTime) > 0 ORDER BY (g.start_date_time-$currentTime)

我得到一个错误
数值超出范围:1690 BIGINT无符号值超出范围…
。如果我将其设置为有符号的,当然一切正常,但我的问题是有没有办法让它保持无符号的,但无论如何计算负值(我只需要计算,不需要将它们存储在任何地方),或者我应该重新定义查询?

您可以使用
CAST()
CONVERT()
将它们转换为有符号整数进行计算。然而,如果你有任何大于一个有符号整数,你会得到不想要的结果。无论如何,时间戳不应该使用整数。使用时间戳或日期时间字段。

我认为您应该重新定义如下

WHERE g.start_date_time > $currentTime ORDER BY g.start_date_time
这将允许在g.start\u date\u time列上使用索引,并且您不必按(g.start\u date\u time-$currentTime)排序