首页 > 解决方案 > 是否可以通过将当月的天数减少到 1 来从 SQLAlchemy 中的日期时间中提取一个月,以便在图表中绘制数据?

问题描述

我知道可以从 sqlalchemy 中的日期时间中提取一个月作为整数:

func.extract('month', datetime)

但是是否可以在 Postgres 数据库中将日期时间的天数更改为该月的 1,以便在图表中绘制数据,如下所示:

func.strftime(datetime, '%Y-%m')

哪个不适用于 Postgres 数据库?

我试过了:

func.to_char

但我需要获取日期时间或至少按月或周分组的日期,以便在图表中随时间推移绘制数据,除非我做错了什么,否则这似乎没有得到日期时间。有任何想法吗?

我知道它将日期时间更改为字符串,但由于某种原因,func.strftime 用于使用 SQLite 绘制图形,但 func.char 不适用于 Postgres。

我是否必须为周、月和年创建 3 个单独的列,然后将它们组合成一个日期时间,以便绘制我需要按周或月分组的数据图?

标签: pythonpostgresqldatetimesqlalchemy

解决方案


有几种方法可以解决这个问题,具体取决于您使用的数据库。我已经为 postgres 和 mysql 提供了一个解决方案来演示:

Postgres:

# Can be used to truncate a datetime value according to any interval
func.date_trunc('month', date_col)

mysql:

# This reformats to the nearest month
# you can manually format to the first day of the month
func.date_format(date_col, '%Y-%m-01')

推荐阅读