sqlalchemy:用float浮动timedelta列给出奇怪的结果

时间:2014-06-23 22:41:12

标签: python datetime 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'))

然而,timedelta 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 :(得分:0)

我不确定将TIME除以数字时会发生什么。但是,可能首先使用TIME_TO_SEC(time)将其转换为seconds即可。

我假设使用了mysql`。