【发布时间】:2019-04-21 15:17:28
【问题描述】:
我正在使用 Sqlalchemy 作为 PSQL 数据库的 ORM。我的时间戳在我的数据库中存储为纪元时间,例如 1525868337991。(以毫秒为单位)
我正在编写查询以获取特定日期的员工人数(按日期分组)。我找不到任何方法可以在我的 ORM 查询中将 epoch 转换为 date,就像 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()
【问题讨论】:
-
那你为什么不直接使用
to_timestamp()的单参数形式? -
@IljaEverilä 我没有 SqlAlchemy 有 to_timestamp() 作为它的 psql。如果它在那里,请告诉我如何使用它..
-
SQLAlchemy 中的
func是通用的。您可以使用它来生成几乎任何必要的函数表达式。func.xyzzy(1, 2)就好了,如果你的数据库有这样的功能。 -
@IljaEverilä 谢谢,我可以得到,但我仍然无法从中提取日期。下面是查询
func.timezone('UTC',func.to_timestamp(EmployeeInfo.employee_created_on/1000))我除以 1000,因为我的时间戳以毫秒为单位 -
使用上述查询我无法执行 group_by,因为日期作为日期时间的实例返回,如
datetime.datetime(2018, 4, 9, 7, 34, 2, 744000)
标签: python python-2.7 orm sqlalchemy flask-sqlalchemy