您好,我在PHP脚本中有以下MySQL查询

$query_players = "SELECT (current_timestamp -`Online_since`) AS `Since` FROM `streams` WHERE `Team` = $temp AND `Online` = 1 ORDER BY `Viewers` DESC";


然后我有:

$since = round($obj_players->Since /3600);


可以想象,$ since应该包含播放器已经在几小时内上线的时间。奇怪的是,它有错误的结果。就像MySQL中的时间过得快:P
例如,大约15分钟后,它已经显示“自1小时以来处于联机状态”,另外大约30分钟后,它已经显示了2小时,依此类推。

有人知道怎么了吗?也许current_timestamps是问题吗?

最佳答案

current_timestamp并不是真正以秒为单位的。因此,将差异除以3600不会得出小时数,而是一些任意值。

18分钟后的差异是1800,而round(1800/3600) = round(0.5)当然是1

根据您的实际列类型,使用timediff()timestampdiff()进行计算。

08-06 16:36