PHP / MySQL毫秒到小时:分钟:秒

问题描述 投票:1回答:2

我的任务是为我们服务器的一个游戏模式制作统计数据“查看器”。它一直很好,但我唯一的问题是将播放时间转换为小时:分钟:秒。

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

现在,我想知道解决这个问题的最简单,最有效的方法是什么。有没有一种方法可以在我不知道的MySQL查询中执行此操作?

php mysql integer-overflow
2个回答
1
投票

假设您有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;

这将返回10000小时21分56秒。

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


0
投票

列类型是什么?整数?

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

容易出局:

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

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

$ sql =“UPDATE users SET time = time / 60000”;

© www.soinside.com 2019 - 2024. All rights reserved.