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";
我的任务是为我们服务器的一种游戏模式制作统计数据 "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";