【问题标题】:get diff between 2 columns in postgresql by sqlalchemy通过 sqlalchemy 在 postgresql 中获取 2 列之间的差异
【发布时间】:2018-01-26 22:34:35
【问题描述】:

我有 posgresql 和 2 列 datetime 值。如何通过 sqlalchemy 获得这些列之间的差异? 理想情况下,我只需要具有最大差异值的一行

【问题讨论】:

    标签: python postgresql sqlalchemy


    【解决方案1】:

    假设您已经定义了为数据库创建会话所需的类和其他代码,您可以像这样查询最大差异:

    # code to set up database engine...
    
    class SomeTable(Base):
        __tablename__ = 'some_table'
        id_ = Column(Integer, primary_key=True)
        datetime_1 = Column(DateTime)
        datetime_2 = Column(DateTime)
    
    # code to set up session...
    
    >>> from sqlalchemy.sql import func
    >>> q = session.query(func.max(SomeTable.datetime_1 - SomeTable.datetime_2))
    >>> print(q)
    SELECT max(some_table.datetime_1 - some_table.datetime_2) AS max_1 
    FROM some_table
    >>> print(q.one())
    (datetime.timedelta(133, 28552, 844875),)
    >>> diff = q.scalar()    # to get the value directly
    >>> diff
    datetime.timedelta(133, 28552, 844875)
    >>> print(diff)
    133 days, 7:55:52.844875
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多