首页 > 解决方案 > 将秒转换为 dd:hh:mm:ss (sql:query jsp)

问题描述

我的简单大脑无法确定我需要对此做出哪些改变(这是有效的)

SELECT Name, Zone, Duration,

FLOOR(Duration/3600) as hours

,ROUND(FLOOR((Duration/3600-FLOOR(Duration/3600))*60)) as mins

,ROUND((((Duration/3600-FLOOR(Duration/3600))*60) - FLOOR((Duration/3600-FLOOR(Duration/3600))*60)) * 60) as secs

from duration 

(持续时间以秒为单位)

确定 dd:hh:mm:ss(天:小时:分钟:秒)。我知道天数计算需要除以 86400,但不确定其他计算应该是什么。

协助表示赞赏。

请注意,经过很多天的摆弄,这是我能得到的最接近有意义的东西(没有任何错误,NULLS 等)

SELECT Name, Zone, Duration,
FLOOR(Duration/60/60/24) as days
,FLOOR(Duration/60/60)%24 as hours
,FLOOR(Duration/60)%60 as mins
,Duration%60 as secs
from duration 

但最好将所有内容显示为 2 个字符(dd:mm:hh:mm,而不是 d:hh:m:ss 等),但不必使用 c:set、fmt 然后 c:out 等(这很混乱在我看来很长)

问候拉尔夫

标签: mysqljsp

解决方案


尝试这个:

SELECT Duration DIV 86400, SEC_TO_TIME(Duration MOD 86400)

要将整个内容放在一个文本字符串中,请执行以下操作:

SELECT CONCAT_WS(':', Duration DIV 86400, SEC_TO_TIME(Duration MOD 86400))

DIV并且MOD是整数运算符。在您的情况下CONCAT_WS(),与指定的分隔符连接。:

如果由于某种原因CONCAT_WS()不起作用,请尝试

SELECT CONCAT(Duration DIV 86400, ':',SEC_TO_TIME(Duration MOD 86400))

您的Duration值可能具有除INT. 尝试这个:

SELECT CONCAT(CAST(Duration AS INT) DIV 86400, 
              ':',
              SEC_TO_TIME(CAST(Duration AS INT)  MOD 86400));

推荐阅读