Passing parameter through function

Xehron

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!'
Ayush Gupta

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.

edited at
0

Comments

0 comments
Login to comment

Related