如何在特定时期内按时间间隔分组?
How can I group by a time interval inside a specific period?
给定以下结构和数据:
user initial_date final_date
'JOHN' '2016-05-05 18:21:51', '2016-05-05 18:50:34'
'JOHN' '2016-05-05 18:51:44', '2016-05-05 19:10:54'
考虑到 2016-05-05 00:00:00
和 2016-05-05 18:59:59
之间的时间段,我需要找出约翰在这些寄存器中花费了多少分钟,如下所示:
user initial_date final_date minutes_spent
'JOHN' '2016-05-05 18:20:00', '2016-05-05 18:50:00' 30
'JOHN' '2016-05-05 18:51:00', '2016-05-05 19:10:00' 9
第二行结果是9,因为我的搜索周期是18:59:59,所以必须忽略19:00:00之后的周期。
这对你有用吗:
select timestampdiff(MINUTE, greatest(initial_date,$start_of_range),
least(final_date,$end_of_range)) from tbl where initial_date between
$start_of_range and $end_of_range or
final_date between $start_of_range and $end_of_range
?
给定以下结构和数据:
user initial_date final_date
'JOHN' '2016-05-05 18:21:51', '2016-05-05 18:50:34'
'JOHN' '2016-05-05 18:51:44', '2016-05-05 19:10:54'
考虑到 2016-05-05 00:00:00
和 2016-05-05 18:59:59
之间的时间段,我需要找出约翰在这些寄存器中花费了多少分钟,如下所示:
user initial_date final_date minutes_spent
'JOHN' '2016-05-05 18:20:00', '2016-05-05 18:50:00' 30
'JOHN' '2016-05-05 18:51:00', '2016-05-05 19:10:00' 9
第二行结果是9,因为我的搜索周期是18:59:59,所以必须忽略19:00:00之后的周期。
这对你有用吗:
select timestampdiff(MINUTE, greatest(initial_date,$start_of_range),
least(final_date,$end_of_range)) from tbl where initial_date between
$start_of_range and $end_of_range or
final_date between $start_of_range and $end_of_range
?