微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MYSQL TIMEDIFF函数长时间不起作用

如何解决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 ;
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。