I needed SQL-like DATEADD(https://learn.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:
JavaScript
x
14
14
1
def dateadd(interval, num, my_date):
2
if isinstance(my_date, date):
3
if interval == 'day':
4
final_date = my_date + relativedelta(days = num)
5
elif interval == 'month':
6
final_date = my_date + relativedelta(months = num)
7
return final_date
8
else:
9
'Not a date!'
10
11
today = dateadd('day', 0, datetime.today().date())
12
yesterday = dateadd('day', -1, today)
13
14
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.):
JavaScript
1
7
1
def dateadd(INTERVAL, num, my_date):
2
if isinstance(my_date, date):
3
final_date = my_date + relativedelta(INTERVAL = num)
4
return final_date
5
else:
6
'Not a date!'
7
Advertisement
Answer
That’s not how it’s done. Try this:
JavaScript
1
10
10
1
interval = {
2
'month': num # or 'day': num
3
}
4
def dateadd(interval, my_date):
5
if isinstance(my_date, date):
6
final_date = my_date + relativedelta(**interval)
7
return final_date
8
else:
9
return 'Not a date!'
10
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.