gpt4 book ai didi

sql - SQL 中的日期范围交集

转载 作者:可可西里 更新时间:2023-11-01 07:24:11 27 4
gpt4 key购买 nike

我有一个表格,其中每一行都有开始和结束日期时间。这些可以是任意短或长的跨度。

我想查询具有两个开始和停止日期时间的所有行的交集持续时间总和。

如何在 MySQL 中执行此操作?

或者您是否必须选择与查询开始时间和停止时间相交的行,然后计算每行的实际重叠并在客户端求和?


举个例子,用毫秒表示更清楚:

一些行:

ROW  START  STOP
1 1010 1240
2 950 1040
3 1120 1121

我们想知道这些行在 1030 到 1100 之间的总时间。

让我们计算每一行的重叠:

ROW  INTERSECTION
1 70
2 10
3 0

所以这个例子中的总和是 80。

最佳答案

如果你的例子应该在第一行说 70

假设@range_start 和@range_end 作为你的条件参数:

SELECT SUM( LEAST(@range_end, stop) - GREATEST(@range_start, start) )
FROM Table
WHERE @range_start < stop AND @range_end > start

使用 greatest/最少和date functions你应该可以直接在日期类型上操作得到你需要的东西。

关于sql - SQL 中的日期范围交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2771270/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com