MYSQL TIMEDIFF函数长时间不起作用

问题描述

| MysqL Timediff函数对我来说长时间不起作用。实际上,我需要获取date_time字段与Now()之间的时差。 所以我用这个查询
SELECT `date_time`,Now(),timediff(`date_time`,Now()) FROM `table_datetime`
我有两排 约会时间 2011-04-25 17:22:41 2011-06-14 17:22:52 我的结果是 在这里,第一行的结果正在改变,但第二行的结果却没有改变
838:59:59
不断...为什么它没有给出正确的结果 感谢帮助 !     

解决方法

代替
TIMEDIFF
,将
DATEDIFF
EXTRACT
一起使用
SELECT DATEDIFF(\'2011-06-14 17:22:52\',NOW()) * 24
+ EXTRACT(HOUR FROM \'2011-06-14 17:22:52\')
- EXTRACT(HOUR FROM NOW())
感谢@rekaszeru提供有用的链接 替代解决方案(以秒为单位)
SELECT TIMESTAMPDIFF(SECOND,NOW(),\'2011-06-14 17:22:52\');
参考 提取 时差     ,您应该看一下这个问题,并找到知道这些问题的解决方案     ,解决此问题的另一种方法是编写用户定义的函数。请记住,返回值不再是时间对象,而是字符串。因此,在MySQL中,您不能将其用于进一步的计算:
DELIMITER $$

DROP FUNCTION IF EXISTS `big_time_diff`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `big_timediff`(s_start VARCHAR(20),s_end VARCHAR(20)) RETURNS TEXT CHARSET latin1
BEGIN
    DECLARE s_hour VARCHAR(20);
    DECLARE s_rest VARCHAR(20);

    SET s_hour = ABS(TIMESTAMPDIFF(HOUR,s_end,s_start));
    SET s_rest = TIME_FORMAT(TIMEDIFF(s_start,s_end),\':%i:%s\');

    RETURN INSERT(s_rest,LOCATE(\'-\',s_rest) + 1,IF(LENGTH(s_hour) > 2,s_hour,LPAD(s_hour,2,0)));
END$$

DELIMITER ;