首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对开始/完成数据的总时数/日进行分组(每天多个条目,有些跨越午夜)?

如何对开始/完成数据的总时数/日进行分组(每天多个条目,有些跨越午夜)?
EN

Stack Overflow用户
提问于 2017-11-11 09:27:26
回答 1查看 53关注 0票数 0

我想知道如何得到当前日期中两个日期之间的确切时间。

我的桌子;

代码语言:javascript
复制
id | start      | s_clock   | finish      | f_clock
---------------------------------------------------
1  | 2017-11-10 | 22:00     | 2017-11-11  | 03:00
2  | 2017-11-11 | 09:00     | 2017-11-11  | 10:00

预期结果:

代码语言:javascript
复制
day        | total_hours 
--------------------------
2017-11-10 | 02:00            -- sum of all hours spent on 2017-11-10
2017-11-11 | 04:00            -- sum of all hours spent on 2017-11-11

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-11 09:48:12

您应该避免使用保留关键词作为表或字段名。

start就是其中之一。

代码语言:javascript
复制
create table times ( startt date, s_time time, finish date, f_time time);

insert into times
values 
( "2017-11-10" , "22:00", "2017-11-11" , "03:00"),
( "2017-11-11" , "09:00", "2017-11-11" , "10:00");

select time(sum(delta_on_day)),on_day  -- comment line to see ungrouped results
from -- comment line to see ungrouped results
(   -- comment line to see ungrouped results
  (
    select * 
    ,  timediff(time("24:00"), s_time)  as delta_on_day       
    ,  startt as on_day  
    from times 
    where startt < finish
  )
  UNION ALL 
  (
    select * 
    ,  timediff(f_time, time("0:0"))  as delta_on_day       
    ,  finish as on_day  
    from times 
    where startt < finish
  )
  UNION ALL 
  (
    select * 
    ,  timediff(f_time, s_time)  as delta_on_day       
    ,  startt as on_day  
    from times 
    where startt = finish
  )
) as tbl -- comment line to see ungrouped results
group by on_day -- comment line to see ungrouped results

见小提琴:http://sqlfiddle.com/#!9/189e21f/38

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47236375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档