Sqlalchemy convert epoch time to date in group by

谁说胖子不能爱 提交于 2019-12-02 20:04:27

问题


I am using Sqlalchemy as ORM for PSQL db. My timestamps are stores as epoch times in my database eg, 1525868337991. (in milli sec)

I am writing a query to get count of employees on a particular date(grouping by on date). I am not able to find any way by which, I can convert epoch to date in my ORM query, like psql has to_timestamp. The query is written below :

employees_details = db.session.query(
      func.count(EmployeeInfo.id).label("employee_count"), EmployeeInfo.employee_created_on, EmployeeSourceInfo.employee_source_display_name
    ).join(
      EmployeeSourceInfo, EmployeeInfo.lead_source_id == EmployeeSourceInfo.id
    ).group_by(func.as_utc(EmployeeInfo.employee_created_on), EmployeeSourceInfo.employee_source_display_name).all()

回答1:


The func in SQLAlchemy is generic and can be used to produce almost any SQL function expression. With this in mind you can simply replace func.as_utc with

func.to_timestamp(EmployeeInfo.employee_created_on / 1000.0)

To then truncate it to a date either cast it as one:

from sqlalchemy import Date

func.to_timestamp(EmployeeInfo.employee_created_on / 1000.0).cast(Date)

or use the Postgresql specific function date_trunc() to reduce the resulting timestamp to day precision:

func.date_trunc('day', func.to_timestamp(EmployeeInfo.employee_created_on / 1000.0))


来源:https://stackoverflow.com/questions/53371655/sqlalchemy-convert-epoch-time-to-date-in-group-by

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!