mysql - 将秒转换为 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 等(这很混乱在我看来很长)
问候拉尔夫
解决方案
尝试这个:
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));
推荐阅读
- javascript - 如何将时间分量归零?
- python - pandas.to_datetime 在使用 HKMA 的开放 API 时识别正确格式的问题
- python - 无法在 Mac 上安装 mysqlclient 错误
- firebase - firebase 部署到默认域需要修改它
- apache-camel - 需要使用 Camel-Bindy 格式将字符串转换为浮点变量
- asp.net-core - 使用 On-Premise Active Directory (NOT AZURE AD) 作为 Identity Server 4 的身份提供程序存储
- reactjs - 使用钩子设置具有相同值的状态会导致重新渲染?
- python - 获取python中列表的所有排列而不重复?
- javascript - NetSuite 报告附件
- machine-learning - 在 Flux-Julia 中使用 LSTM 对完整序列进行建模