php - SUM 不显示正确的总和 MySQL

标签 php mysql

我有这个问题:

SELECT sum(TIMEDIFF(`time_out`, `time_in`)) as `total` FROM `user_log` WHERE `uid` = '1' AND `time_out` <> '0000-00-00 00:00:00'

然后我计算秒到小时:

$total_difference = (($difference->total) / 60 / 60);

但这显示了 22,352125 小时,这是不可能的......

我一直在测试,如果我不使用 SUM,我会显示 2 条记录:

SELECT TIMEDIFF(`time_out`, `time_in`) as `total` FROM `user_log` WHERE `uid` = '1' AND `time_out` <> '0000-00-00 00:00:00'
  1. 08:00:02
  2. 00:00:11

这个结果远低于我在查询中使用 SUM 时得到的 22 小时。有什么帮助吗?我不知道我做错了什么。

谢谢!

最佳答案

可以调整查询使用TIME_TO_SEC - 这将转换 TIMEDIFF 的返回值到一个数字秒数,可以合理地求和

调整后的查询

SELECT SUM(TIME_TO_SEC(TIMEDIFF(time_out, time_in))) as total 
FROM user_log 
WHERE uid = '1' AND time_out <> '0000-00-00 00:00:00'
;

关于php - SUM 不显示正确的总和 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30125807/

相关文章:

mysql - Rikulo支持mysql数据库吗?

PHP 表单输入字段无法正确保存到数据库

php - CakePHP 3 :Router error, htaccess 自动重定向 webroot/admin/

php - Codeigniter - 使用多个数据库

php - ORDER BY FIELD 不适用于 php

mysql - 如何创建MySQL分层递归查询

php - 接收串口数据 : real-time web display + logging (with downsampling)

php - 如何使用 PHP-FFMpeg 将视频修剪 4 个片段到 4 秒?

php - 这个 mysql 语句有什么问题 - INSERT INTO ... WHERE ... OR?

php - 如何为每个用户循环执行 Codeigniter 中的代码?