gpt4 book ai didi

MySQL 从秒转换为另一种自定义格式

转载 作者:行者123 更新时间:2023-11-29 10:34:22 24 4
gpt4 key购买 nike

我有这个运行良好的 JavaScript 代码:

function timeup(s) {
var d, h, m, s;
m = Math.floor(s / 60);
s = s % 60;
h = Math.floor(m / 60);
m = m % 60;
d = Math.floor(h / 24);
h = h % 24;
m = m > 9 ? m : "0"+m;
h = h > 9 ? h : "0"+h;
s = s > 9 ? s : "0"+s;

if (d > 0) {
d = d+" days ";
} else {
d = "";
}
return d+h+":"+m+":"+s;
}

所以我需要相同的功能,但是在 MySQL 中(因为我执行 SQL 查询并且不想在客户端使用 javascript 转换)

所以我需要在 MySQL 几秒钟内进行转换以获得相同的输出:

timeup(600000) => 6 days 22:40:00
timeup(60000) => 16:40:00
timeup(6000) => 01:40:00
timeup(600) => 00:10:00
timeup(60) => 00:01:00
timeup(60) => 00:01:00
timeup(6) => 00:00:06

因此,如果当天以下的秒数显示 HH:MM:SS 如果当天以上的秒数显示 X 天 HH:MM:SS

我正在尝试使用 CONCAT 和 TIMESTAMPDIFF,但我认为如果比较 24 小时以下的日期或更大的日期以显示自定义字符串 X 天,也许应该进行...欢迎任何帮助。

最佳答案

我对此进行了测试,它似乎可以完成工作:

DROP FUNCTION  IF EXISTS GET_HOUR_MINUTES;
DELIMITER $$
CREATE FUNCTION GET_HOUR_MINUTES(seconds INT)
RETURNS VARCHAR(16)
BEGIN
RETURN CONCAT(LPAD(FLOOR(HOUR(SEC_TO_TIME(seconds)) / 24), 2, 0), ' days ',TIME_FORMAT(SEC_TO_TIME(seconds % (24 * 3600)), '%H:%i:%s'));
END;
$$
DELIMITER ;

像这样测试:

SELECT GET_HOUR_MINUTES(600001);

返回

'06 days 22:40:01'

至少在 MySQL Workbench 中,似乎希望在运行之前选择您正在使用的数据库。它将函数保存在数据库中,即您可以在左侧的“表”、“ View ”、“存储过程”和“函数”栏中看到它。

关于MySQL 从秒转换为另一种自定义格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46742773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com