我如何最好地将90060(秒)转换为字符串“ 25h 1m”?
目前,我正在使用SQL执行此操作:
SELECT IF( HOUR( sec_to_time( sum(time_to_sec(task_records.time_spent)) ) ) > 0, CONCAT( HOUR(sec_to_time(sum(time_to_sec(task_records.time_spent)))), 'h ', MINUTE(sec_to_time(sum(time_to_sec(task_records.time_spent)))), 'm' ), CONCAT( MINUTE(sec_to_time(sum(time_to_sec(task_records.time_spent)))), 'm' ) ) as time FROM myTable;
但是我不确定这是最方便的方法:-)
我愿意在SQL(不同于我已经在做)或PHP中做到这一点。
编辑:
所需字符串的示例:“ 5m”,“ 40m”,“ 1h 35m”,“ 45h”,“ 46h 12m”。
TIME_FORMAT(SEC_TO_TIME(task_records.time_spent),'%Hh %im')
文档是您的朋友:
根据评论:
DROP FUNCTION IF EXISTS GET_HOUR_MINUTES; CREATE FUNCTION GET_HOUR_MINUTES(seconds INT) RETURNS VARCHAR(16) BEGIN DECLARE result VARCHAR(16); IF seconds >= 3600 THEN SET result = TIME_FORMAT(SEC_TO_TIME(seconds),'%kh %lm'); ELSE SET result = TIME_FORMAT(SEC_TO_TIME(seconds),'%lm'); RETURN result; END DELIMETER ;
用法:
SELECT GET_HOUR_MINUTES(task_records.time_spent) FROM table