方法1:使用除法和取余操作
你可以通过将总分钟数除以1440(一天中的分钟数,即60分钟/小时 * 24小时)来计算天数,然后用取余操作来分别得到剩余的小时数和分钟数。
SET @total_minutes = 5000; -- 假设有5000分钟
SELECT
FLOOR(@total_minutes / 1440) AS days,
FLOOR((@total_minutes % 1440) / 60) AS hours,
(@total_minutes % 1440) % 60 AS minutes;
方法2:使用TIMESTAMPDIFF和TIME函数如果你想要一个更直观的方法,可以使用TIMESTAMPDIFF函数来计算天数和小时数,然后使用SEC_TO_TIME和TIME_FORMAT来格式化剩余的分钟。但请注意,这种方法主要用于计算时间差,而不是直接从分钟转换。
SET @total_minutes = 5000; -- 假设有5000分钟
SELECT
TIMESTAMPDIFF(DAY, '00:00:00', SEC_TO_TIME(@total_minutes * 60)) AS days,
TIMESTAMPDIFF(HOUR, '00:00:00', SEC_TO_TIME(@total_minutes * 60)) - TIMESTAMPDIFF(DAY, '00:00:00', SEC_TO_TIME(@total_minutes * 60)) * 24 AS hours,
SEC_TO_TIME(@total_minutes * 60) - TIMEDIFF('00:00:00', SEC_TO_TIME(TIMESTAMPDIFF(HOUR, '00:00:00', SEC_TO_TIME(@total_minutes * 60)) * 3600)) AS remaining_time;
然后你可以从remaining_time中提取小时和分钟。方法3:更简洁的方法
考虑到第一种方法已经足够直接和清晰,你可以直接使用它来获取天数、小时和分钟。
SET @total_minutes = 5000; -- 假设有5000分钟
SELECT
FLOOR(@total_minutes / 1440) AS days,
FLOOR((@total_minutes % 1440) / 60) AS hours,
(@total_minutes % 1440) % 60 AS minutes;
这种方法是最直接且高效的,因为它直接通过数学运算来计算天数、小时和分钟,不需要额外的日期时间格式化函数。
发表评论