I needed SQL-like DATEADD(https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15) function to avoid using multiple if statements.
This is what I currently have:
def dateadd(interval, num, my_date):
if isinstance(my_date, date):
if interval == 'day':
final_date = my_date + relativedelta(days = num)
elif interval == 'month':
final_date = my_date + relativedelta(months = num)
return final_date
else:
'Not a date!'
today = dateadd('day', 0, datetime.today().date())
yesterday = dateadd('day', -1, today)
This is what I'm trying to achieve (to pass INTERVAL argument to dateadd function that would change parameter of relativedelta to days,months,years etc.):
def dateadd(INTERVAL, num, my_date):
if isinstance(my_date, date):
final_date = my_date + relativedelta(INTERVAL = num)
return final_date
else:
'Not a date!'
That's not how it's done. Try this:
interval = {
'month': num # or 'day': num
}
def dateadd(interval, my_date):
if isinstance(my_date, date):
final_date = my_date + relativedelta(**interval)
return final_date
else:
return 'Not a date!'
Basically, you have to create a dictionary with parameter name as the key and parameter's value as the key's value. And then use **
to unpack the value in the function's parameter.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments