如果您将一个月的最后一天传递给Oracle add_months
函数,它将返回该月的最后一天。但是在python中,据我所知,relativedelta无法返回该月的最后一天。月。
我无法导入MonthDelta,也不知道它是否有效。
例如,add_months(to_date('20190430','yyyymmdd'),-6)
返回'20181031'
,
from dateutil.relativedelta import relativedelta
from datetime import date
date(2019,4,30) - relativedelta(months=6)
# returns 20181030
我想知道是否有某些功能完全像add_month
在python或greenplum中一样。
答案 0 :(得分:0)
您可以在减去月份之前将一天添加到该月的初始最后一天。 然后您可以减去该天以获得上个月的最后一天。
import datetime
import dateutil.relativedelta
my_date = datetime.date(2019,4,30)
date_six_months_ago = my_date + datetime.timedelta(days=1) - dateutil.relativedelta.relativedelta(months=6) - datetime.timedelta(days=1)
print(date_six_months_ago)
输出:
2019-10-31
逐步:
2019-04-30 + 1 day = 2019-05-01
2019-05-01 - 6 months = 2018-11-01
2018-11-01 - 1 day = 2018-10-31
答案 1 :(得分:0)
两个不同的答案:
在Greenplum中安装Oracle兼容性功能。
psql -f /usr/local/greenplum-db/share/postgresql/contrib/orafunc.sql
然后您可以像在Oracle中一样使用Oracle中的add_months()函数。
您可以使用间隔数据类型添加一个月。
your_date_field + interval '1 month'