我正在尝试计算到凌晨00:00的剩余分钟数。
DELIMITER //
CREATE PROCEDURE midnightCountdown()
BEGIN
SELECT TIME_FORMAT(TIMEDIFF('24:00:00', CURRENT_TIME()),'%i');
END //
DELIMITER ;
但是它将剩余的分钟数分配给下一个整小时:
TIME_FORMAT(TIMEDIFF('24:00:00',CURRENT_TIME()),'%i')
16
我检查了WAMP程序中的当前时间,它是正确的,与系统时间相同。
我在做什么错了?
答案 0 :(得分:0)
采用这种方法,您将忽略TIMEDIFF
之后的时间。因此,您需要提取小时数并将其乘以60,然后将值添加到提取分钟数中:
SELECT TIME_FORMAT(TIMEDIFF('24:00:00', CURRENT_TIME()),'%i')
+ TIME_FORMAT(TIMEDIFF('24:00:00', CURRENT_TIME()),'%H') * 60;
另一种方法是将TIME_DIFF转换为秒,然后将其(整数除法)除以60:
SELECT TIME_TO_SEC(TIMEDIFF('24:00:00', CURRENT_TIME())) DIV 60;
注意:在两种情况下,您都将获得完整分钟的时间。这意味着在23:59:30
处的结果将是0
。