我对下面的查询有一个问题;这个查询本身运行得很好,但是它是按秒分组的,我希望截断秒数并按分钟分组。我曾尝试过枣仁、提取物等,但一直没有任何运气。当引擎是sqlite时,extract('minute')工作正常,但在postgresql中就不行了。在
有谁能给我指出正确的方向吗?在
PostgreSQL版本:x86上的PostgreSQL 8.1.23 64-redhat-linux-gnu
Column('id', Integer, primary_key=True),
Column('date', TIMESTAMP),
Column('src', String),
Column('dst', String),
Column('len', String),
Column('sport', String),
Column('dport', String),
Column('method', String),
Column('host', String),
Column('useragent', String),
Column('statusline', String),
Column('location', String),
Column('server', String),
Column('load', String),
now = datetime.datetime.now()
DD = now - datetime.timedelta(minutes=60)
DD = DD.strftime('%Y-%m-%d %H:%M:%S')
query = session.query(HTTP.date,HTTP.statusline, func.count(HTTP.statusline).
label('count')).filter(HTTP.statusline.like('%'+status+'%'), HTTP.date>=(DD)).group_by(HTTP.date, HTTP.statusline).order_by(asc(HTTP.date)).all()
在执行任何操作之前,请考虑升级到PostgreSQL 8.1 is long dead and forgotten的当前版本。在
不完全确定符号,但使用@Audrius in the comments的更新,它应该是这样工作的:
基本上,使用}和
date_trunc('min', http.date)
代替SELECT
中的http.date
,以及{ORDER BY
中的别名。在顺便说一句:我发现用
date
作为timestamp
的名称是非常误导人的。除此之外,我的建议是永远不要使用任何基类型名称作为标识符。导致非常混乱的错误消息和其他难以调试的错误。在相关问题 更多 >
编程相关推荐