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是问题吗?
答案 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";