所以我正在为机场建立一个数据库,我想找到飞行的持续时间。有一个名为flight的表具有id ... dep_time (出发时间), arr_time (到达时间)声明为没有时区的时间 。
问题是其中一班航班于23:00:00起飞,并于第二天02:00:00 抵达。
所以一般来说我使用的是 arr_time - dep_time ,但是这给了我特定航班的负面结果(-21:00:00)。
所以我想要的是,我偶然使用了 - dep_time + arr_time 并得到了正确的结果(03:00:00)......有人可以解释一下吗?我很困惑
(我不想要解决方案,因为我得到了它,我想要一个解释。另外我必须使用时间而不是时间变量,因为它在项目中指定)
编辑#1:伙计们我不想解决这个问题,我已经解决了。我想知道为什么结果存在差异,而不应该存在。答案 0 :(得分:0)
类型class SatInt:
def __init__(self, low, up):
self.lower = low
self.upper = up
self.value = 0
def add(self, n):
if n+self.value > self.upper:
self.value = self.upper
else:
self.value = self.value + n
x = SatInt(0,100)
x.add(32718)
print(x.value)
的基线是一天。内部 - 它是从0:0:0开始的秒数。它只适用于两个值都是一天的情况。但是当这些值来自不同的日期时,您可以获得负值,因为此类型的溢出超过最大值(24小时 - 这是这两个基线之间的差异)。这个错误可以通过24小时添加来修复:
time
同样的情况可能是一周,几个月的日期。您可以按更高的顺序(或绝对值)计算,或者必须在基线中固定距离。
所以db2=# select '02:00:00'::time - '23:00:00';
┌───────────┐
│ ?column? │
╞═══════════╡
│ -21:00:00 │
└───────────┘
(1 row)
db2=# select '02:00:00'::time - '23:00:00' + '24hours';
┌──────────┐
│ ?column? │
╞══════════╡
│ 03:00:00 │
└──────────┘
(1 row)
,但tue - mon = 1 .. (2 - 1)
这几天是在不同的几周,所以你必须修复它Sun - Sat = -6 .. (0 - 6)