PHP/MySQL 毫秒到 Hours:Minutes:Seconds

PHP/ MySQL Milliseconds to Hours:Minutes:Seconds

我的任务是为我们服务器的一种游戏模式制作统计数据 "viewer"。进展顺利,但我唯一的问题是将播放时间转换为 hours:minutes:seconds.

制作实际游戏模式的开发者以毫秒为单位存储 MySQL 中的游戏时间。可悲的是,许多玩家有足够的时间很容易导致整数溢出(在PHP中计算时)。

现在,我想知道解决此问题的最简单、最有效的方法是什么。在我不知道的 MySQL 查询中是否有执行此操作的方法?

假设您有 36001316000 毫秒:

SET @miliseconds = 36001316000;
SET @s = @miliseconds / 1000; 
SET @hours = FLOOR(@s / 3600);
SET @minutes = FLOOR(@s / 60 - @hours * 60); 
SET @seconds = ROUND(@s - @hours * 3600 - @minutes * 60);

SELECT @hours, @minutes, @seconds;

这将 return 10000 小时 21 分 56 秒。

您将如何存储这些信息取决于您将如何使用它们。如果仅供参考,或基于 PHP 的计算,您可以将其存储在 varchar 中,如果您需要基于它在 MySQL 中进行计算,则可以将其存储在 3 个不同的整数字段中。

什么是列类型?整数?

将整数更改为无符号整数将使最大数加倍。

轻松出局:

将该列的 table 结构从 INT 更改为 BIGINT

如果已经是 BIGINT,则将现有记录除以 1000 并使用秒数。
示例:
或将现有记录除以 60000 并使用分钟。

$sql = "UPDATE users SET time = time / 60000";