Hen*_*nno 21 mysql time duration
我怎样才能最好地将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;
Run Code Online (Sandbox Code Playgroud)
但我不确定这是最方便的方法:-)
我对在SQL(不同于我已经在做)或PHP中这样做的建议持开放态度.
编辑:
所需字符串的示例:"5m","40m","1h 35m","45h""46h 12m".
Pet*_*ter 50
TIME_FORMAT(SEC_TO_TIME(task_records.time_spent),'%Hh %im')
Run Code Online (Sandbox Code Playgroud)
文档是你的朋友:
根据评论:
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 ;
Run Code Online (Sandbox Code Playgroud)
用法:
SELECT GET_HOUR_MINUTES(task_records.time_spent) FROM table
Run Code Online (Sandbox Code Playgroud)
您可以使用预定义函数 sec_to_time()
sec_to_time(秒数)
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_sec-to-time