如何解决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 举报,一经查实,本站将立刻删除。