sqlalchemy: 将timedelta列除以浮点数得到奇怪的结果
我正在尝试在查询中对某一列进行一些操作。我想把一个时间差(timedelta)列除以60。不过,结果有点奇怪。
在我的查询中,我返回了两个时间点、这两个时间点之间的时间差,以及这两个时间点之间的时间差除以2。下面是输出的一个例子:
(datetime.datetime(2013, 1, 1, 0, 0, 8),
datetime.datetime(2013, 1, 1, 0, 7, 32),
datetime.timedelta(0, 444),
Decimal('362.0000'))
但是,时间差444除以2并不等于362.0000。这就是sqlalchemy给我的结果。有没有办法得到正确的结果呢?
在查询中进行这种操作很重要,因为我还想把上面的结果作为子查询,并对结果进行平均,但我得到的平均值也很奇怪。
这是我的查询:
sub = session.query(
merge.c.time_received,
merge.c.time_sent,
func.timediff(
merge.c.time_sent,
merge.c.time_received
),
func.timediff(
merge.c.time_sent,
merge.c.time_received
) / 2.0
). \
filter(
merge.c.time_received != None,
merge.c.time_sent != None,
). \
limit(1)
1 个回答
0
我不太确定当你把TIME
类型的数据除以一个数字时会发生什么。不过,也许先用TIME_TO_SEC(time)
把它转换成秒
,这样就能解决问题了。
我假设这里使用的是mysql。