MySQL current_timestamp - timestamp抛出错误的结果


MySQL current_timestamp - timestamp throws wrong results

Hello in a PHP Script我有以下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中,时间过得很快例如,大约15分钟后,它已经显示"在线1小时",再过大约30分钟,它已经显示2小时,等等。

有谁知道有什么问题吗?也许current_timestamps是问题所在?

current_timestamp实际上不是以秒为单位测量的。因此,将差值除以3600不会得到小时数,而是某个任意值。

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

根据您的实际列类型使用timediff()timestampdiff()为您的计算

尝试使用TIMESTAMPDIFF:

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