mysql - 如何在 mysql 中从 datediff 结果中添加或减去分钟

标签 mysql

我正在尝试进行查询以显示所有工作时间、日期和人员。 我正在运行。

假设我有一个名为 uren 的表:

rec_id | user_id | start (datetime) | eind (datetime)

我有一个名为 users 的表

user_id | name        |

通过下面的查询,我几乎获得了我想要的所有信息。

select users.name, sec_to_time(SUM(TIME_TO_SEC(TIMEDIFF(uren.eind, uren.start)))),count(distinct(date(start))) as dagen
from uren, users
where date(uren.start) between CAST('2017-10-04 00:00:00' as Date) and CAST('2017-11-04 00:00:00' as DATE) and
      uren.user_id = users.user_id
group by uren.user_id
ORDER BY name

这向我展示了这个

Piet (name) 230 (hours total) 24(days worked)

现在真正的问题来了:

如果每天工作时间少于 5 小时,我想减去 30 分钟。

我对自动取款机一无所知。 有人可以帮忙吗

最佳答案

假设每个用户每天一行:

select users.name,
       (sec_to_time(sum(time_to_sec(timediff(uren.eind, uren.start))) -
                    30 * 60 * sum(time_to_sec(timediff(uren.eind, uren.start)) < 5*60*60)
                   )
       ),
       count(distinct(date(start))) as dagen
from uren join users
     on uren.user_id = users.user_id
where date(uren.start) between '2017-10-04' and '2017-11-04'   
group by uren.user_id
order by name;

如果一天有多个类次,则需要先按天汇总:

select u.name,
       (sec_to_time(sum(day_secs) -
                    30 * 60 * sum(day_secs < 5*60*60)
                   )
       ),
       count(*) as dagen
from (select uren.user_id, uren.name, date(uren.start),
             sum(time_to_sec(timediff(uren.eind, uren.start))) as day_secs
      from uren join
           users
           on uren.user_id = users.user_id
      where uren.start >= '2017-10-04' and uren.start < '2017-11-05'   
      group by uren.user_id, date(uren.start)
     ) u
group by name
order by name

关于mysql - 如何在 mysql 中从 datediff 结果中添加或减去分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47114163/

相关文章:

mysql - 在大型 MySQL 数据库中查找最常见的单词

mysql - 如何配置circle.yml以调用数据库?

php - 系统打卡 PHP, Ajax, Mysql

mysql - 如何在MYSQL中真正清除缓存?

mysql - Sphinx sql_attr_multi - 如何找到值的精确组合?

javascript - 如何发送和接收动态输入字段的MySQL数据

php从mysql解码二进制(16)ip

php - 在 PHP 中不使用 MySql 函数转义字符

mysql - 如何Mysql按月SELECT

mysql - 在codeigniter中将图像上传到数据库?