MySQL current_timestamp - 时间戳会导致错误的结果

时间:2012-12-25 19:46:55

标签: php mysql

Hello脚本中我有以下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);

正如你可能想象的那样,$应该包含玩家已经在几小时内上网的时间。奇怪的是,它有错误的结果。就像MySQL中的时间越来越快:P 例如,大约15分钟后它已经显示“在线1小时”,另外大约30分钟后它已经显示2小时,依此类推。

任何人都知道什么可能是错的?也许current_timestamps是问题吗?

2 个答案:

答案 0 :(得分:2)

current_timestamp实际上并没有在几秒钟内完成测量。因此将差值除以3600不会产生小时数,而是产生一些任意值。

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

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

答案 1 :(得分:1)

尝试使用TIMESTAMPDIFF:

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