1
A
回答
0
我不知道SQLAlchemy,所以我可能会脱离目标。不过,我认为,所有你需要的是:
SELECT date_formatter(datetime_field, "format-specification") AS dt_field, COUNT(*)
FROM logs
GROUP BY date_formatter(datetime_field, "format-specification")
ORDER BY 1;
OK,也许你并不需要ORDER BY,也许这将是更好地重新指定日期表达式。有可能有替代品,如:
SELECT dt_field, COUNT(*)
FROM (SELECT date_formatter(datetime_field, "format-specification") AS dt_field
FROM logs) AS necessary
GROUP BY dt_field
ORDER BY dt_field;
等等等等。基本上,你格式化日期时间字段,然后继续对格式化的值进行分组等。
1
当您只是通过未格式化的日期时间列进行分组时,计数是否会产生相同的结果?如果是这样,你可以运行查询,然后使用Python日期的strftime()方法。即
query = select([logs.c.datetime, func.count(logs.c.datetime)]).group_by(logs.c.datetime)
results = session.execute(query).fetchall()
results = [(t[0].strftime("..."), t[1]) for t in results]
4
我不知道一般的SQLAlchemy答案。大多数数据库通常通过函数支持某种形式的日期格式。 SQLAlchemy支持通过sqlalchemy.sql.func调用函数。因此,例如,使用的SQLAlchemy在Postgres的后端,和一张桌子MY_TABLE(富VARCHAR(30),当时间戳)我可能会按日期截断到一个月做类似
my_table = metadata.tables['my_table']
foo = my_table.c['foo']
the_date = func.date_trunc('month', my_table.c['when'])
stmt = select(foo, the_date).group_by(the_date)
engine.execute(stmt)
到组。但请记住,在该示例中,date_trunc()是Postgres日期时间函数。其他数据库将会不同。你没有提到underlyig数据库。如果有一种数据库独立的方式来做到这一点,我从来没有找到一个。在我的情况下,我运行生产和测试aginst Postgres和单元测试aginst SQLite,并采取在我的单元测试中使用SQLite用户定义函数来模拟Postgress日期时间函数。
相关问题
- 1. 按特定时间在Rails中按日期分组
- 2. 在Rails3中格式化按日期分组的输出
- 3. 按空组分组日期
- 4. SSRS - 按日期分组表达式
- 5. 在linq中按日期分组
- 6. 在Wordpress中按日期分组帖子
- 7. 在SQL Server中按日期分组
- 8. 按日期分组排序
- 9. 按日期分组ID
- 10. 不按日期分组?
- 11. MySQL:按日期分组RANGE?
- 12. 按月分组SAS日期
- 13. SQL按周分组日期
- 14. mySQL DateDiff按日期分组
- 15. 如何按日期按季度分组
- 16. SQLAlchemy:如何按两个字段进行分组并按日期过滤
- 17. Xamarin格式:按日期对列表视图进行分组
- 18. 在谷歌电子表格中按日期范围分组
- 19. 只按日期分组日期时间在Ruby中
- 20. 分组结果按日期在MySQL
- 21. solrj中按日期字段分组
- 22. PowerShell中的“按日期分组”
- 23. 如何按星期分组日期?
- 24. 按星期,月份,日期分组
- 25. 按照日期格式排序在iPhone
- 26. 按特定值分组
- 27. 格式化日期到特定格式
- 28. 按树形格式分组
- 29. “组按天”在Oracle不按日期
- 30. amCharts组按日期
正是我需要..现在到SQLite手册找到截断功能!我认为这是``STRFTIME('%Y-%m',当)``在我的情况下。 – 2012-03-26 14:19:56