的时间数据类型的小时部分不能持有超过23值越大你将不得不使用char或varchar。
计算,以秒为两个时间戳之间的差别,就像这样:
SELECT TIMESTAMPDIFF(SECOND, '2016-06-10 11:00:00', '2016-06-10 12:00:00');
然后你可以使用此功能将秒转换成格式days:hours:minutes:seconds
DROP FUNCTION IF EXISTS f_s2dhms;
DELIMITER $$
CREATE FUNCTION f_s2dhms(v_seconds INT)
RETURNS VARCHAR(15)
DETERMINISTIC
COMMENT 'converts seconds in days:hours:minutes:seconds'
BEGIN
DECLARE v_dhms VARCHAR(15);
DECLARE v_days INT;
DECLARE v_hours INT;
DECLARE v_minutes INT;
SET v_hours = v_seconds/3600;
SET v_minutes = (v_seconds % 3600)/60;
SET v_seconds = (v_seconds % 3600) % 60;
IF (v_hours > 23) THEN
SET v_days = v_hours/24;
SET v_hours = v_hours % 24;
ELSE
SET v_days = 0;
END IF;
RETURN CONCAT(v_days, ':', RIGHT(CONCAT('0', v_hours), 2), ':', RIGHT(CONCAT('0', v_minutes), 2), ':', RIGHT(CONCAT('0', v_seconds), 2));
END $$
DELIMITER ;
使用它像
SELECT f_s2dhms(TIMESTAMPDIFF(SECOND, '2016-06-10 11:00:00', '2016-06-10 12:00:00'));
- here你可以阅读更多关于
timestampdiff()
添加你的表记录与你的'更新'查询结果的结果。 –
也发布'show create table abc_table'结果。 –
@RavinderReddy如果没有这些信息,问题是完全正确的。 – fancyPants