python - Sqlalchemy 将纪元时间按组转换为日期
问题描述
我正在使用 Sqlalchemy 作为 PSQL 数据库的 ORM。我的时间戳在我的数据库中存储为纪元时间,例如 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()
解决方案
SQLAlchemy 中的func
是通用的,可用于生成几乎任何 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))
推荐阅读
- python - 启动器中的致命错误:无法使用“c:\python27\python.exe”创建进程
- javascript - 提示一个字符串。在数组中识别它,如果是,则返回作为该字符串的事实写入的信息
- apache-spark - org.apache.hadoop.mapred.InvalidInputException:输入路径不存在:
- css - 为自定义 React 组件添加额外的类名
- angular - 无法在父组件中使用子组件
- c# - Unity 中的门户系统
- wpf - 使用 Trigger 更改 DataTemplate 时随机选择的项目
- php - 带有冒号的属性的 PHP Xpath 查询不起作用
- python - 使用 GARCH 模型进行滚动预测
- r - 根据块的均值 R 将非平稳向量拆分为大小不均匀的块