是否有一些代码的作用与 Oracle 中的“add_month”相同?
Is there some piece of code acting the same way as `add_month` do in oracle?
Oracle add_months
function will return the last day of month if you pass the last day of month to it.But in python ,as far as I have known,relativedelta 不能 return 月份的最后一天。
我无法导入MonthDelta,我不知道它是否有效。
例如add_months(to_date('20190430','yyyymmdd'),-6)
returns '20181031'
,
from dateutil.relativedelta import relativedelta
from datetime import date
date(2019,4,30) - relativedelta(months=6)
# returns 20181030
我想知道在 python 或 greenplum 中是否有一些功能与 add_month
完全一样。
在减去月份之前,您可以在该月的最初最后一天加上一天。
然后你可以减去那一天得到上个月的最后一天。
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
两个不同的答案:
在 Greenplum 中安装 Oracle 兼容性功能。
psql -f /usr/local/greenplum-db/share/postgresql/contrib/orafunc.sql
然后您可以像在 Oracle 中一样在 Oracle 中使用 add_months() 函数。
您可以使用间隔数据类型来添加月份。
your_date_field + interval '1 month'
Oracle add_months
function will return the last day of month if you pass the last day of month to it.But in python ,as far as I have known,relativedelta 不能 return 月份的最后一天。
我无法导入MonthDelta,我不知道它是否有效。
例如add_months(to_date('20190430','yyyymmdd'),-6)
returns '20181031'
,
from dateutil.relativedelta import relativedelta
from datetime import date
date(2019,4,30) - relativedelta(months=6)
# returns 20181030
我想知道在 python 或 greenplum 中是否有一些功能与 add_month
完全一样。
在减去月份之前,您可以在该月的最初最后一天加上一天。 然后你可以减去那一天得到上个月的最后一天。
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
两个不同的答案:
在 Greenplum 中安装 Oracle 兼容性功能。
psql -f /usr/local/greenplum-db/share/postgresql/contrib/orafunc.sql
然后您可以像在 Oracle 中一样在 Oracle 中使用 add_months() 函数。
您可以使用间隔数据类型来添加月份。
your_date_field + interval '1 month'