Sqlalchemy конвертировать время эпохи в дату в группе по - PullRequest
0 голосов
/ 19 ноября 2018

Я использую Sqlalchemy как ORM для PSQL db.Мои метки времени хранятся в моей базе данных как эпоха, например, 1525868337991. (в миллисекундах)

Я пишу запрос, чтобы получить количество сотрудников на определенную дату (с группировкой по дате).Я не могу найти какой-либо способ, которым я могу преобразовать эпоху в дату в своем запросе ORM, как psql имеет to_timestamp .Запрос написан ниже:

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 Ответ

0 голосов
/ 19 ноября 2018

func в SQLAlchemy является общим и может использоваться для создания практически любого выражения функции SQL.Имея это в виду, вы можете просто заменить func.as_utc на

func.to_timestamp(EmployeeInfo.employee_created_on / 1000.0)

Чтобы затем обрезать его до даты, либо приведите его как единое целое:

from sqlalchemy import Date

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

, либо используйте специальную функцию Postgresql date_trunc(), чтобы уменьшить полученную метку времени до дневной точности:

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