我在postgers中有一个表,其模式类似于此。 id start_time end_time
1 2019-10-21 20:00:00 UTC 2019-10-21 23:00:00 UTC
2 2019-10-21 22:00:00 UTC 2019-10-22 02:00:00 UTC 我想写一个查询,这将给我在数据库本身重叠的持续时间。 例如:给定两个输入t1=2019-10-21 21:00:00 UTC t2=2019-10-22 01:00:00 UTC,查询应该计算输入范围之间的所有重叠时间 输入与行1的重
我有一系列列的日期范围,例如start_date、end_date、period_name
1 100 Roman
-50 75 Iron Age b
-100 20 Iron Age a
我的团队要求我构建两个查询:
选择罗马时期和任何重叠的
与1相同,但只有重叠超过40%的范围
我假设我必须用postgresql (PL/pgSQL)编写一个函数,任何帮助都是非常受欢迎的。
我有两个范围,我想检查范围是否重叠。我已经将范围转换为列表,并正在检查readRegion中是否有一个值在refRegion中,但这是非常慢的。有没有更有效的方法来做到这一点?
readRegion=[*range(end,start,1)] #this list is always 600 in length
refRegion=[*range(600000,600500,1)] #this range will vary
p=0
for i in readRegion:
if i in refRegion and p < 10000:
regReads.app
如果我有两个重叠的范围:
x = 1..10
y = 5..15
当我说:
puts x.include? y
输出为:
false
因为这两个范围只有部分重叠。
但如果当两个范围之间存在部分重叠时,我希望它为"true“,我该如何编写呢?换句话说,我需要一种方法来知道一个范围何时包含另一个范围的子集。我假设有一种用Ruby编写代码的优雅方法,但我能想到的唯一解决方案是冗长的。
当我使用YYYY-MM-DDTHH:MM:SSZ格式时,用于检查两个日期范围是否重叠的函数不起作用
date rent2和book2的第二个示例具有相同的日期,但时间不同,因此不应检测重叠
const rent = {
start: new Date("2019-03-10"),
end: new Date("2019-03-14")
}
const book = {
start: new Date("2019-03-15"),
end: new Date("2019-03-18"),
}
const
我不愿使用任何第三方JAR或AWT作为此解决方案的一部分。我正在尽我所能来保持我的项目无依赖。而且,如果JRE附带了任何为我解决这个问题的类,我仍然对这里的自定义解决方案感兴趣,这样我就可以真正理解数学,而不仅仅是盲目地进行几次API调用。
对于各种形状,我有以下POJO结构:
public class Coordinate {
private Double xVal;
private Double yVal;
// Constructors, getters/setters, etc.
public static Double distance(Coord