如何在Python代码中的函数中获取日期的datepart?

时间:2019-04-15 18:26:51

标签: python pyspark-sql

我需要在Python中运行一个检查今天的日期和月份的函数,以及另一个指示符/标志,以确定是只运行用于月度记录的代码还是运行月度和季度记录的代码。

我遇到一个错误,说“未定义 全局名称'month' ”。

作为PySpark sqlContext代码的一部分,我尝试了语句“ month(current_timestamp) ”,它运行良好。

我还尝试将“ current_timestamp ”更改为“ datetime.now() ”,但得到了同样的错误。

def testing():
    conn = pymssql.connect(server='xx.xx.xx.xxx', user='user', password='password', database='database')
    stmt="select flag from dbo.score_flag"      
    lead_pd = pd.read_sql(stmt,conn)
    lead_flag=lead_pd.at[0,'flag']

    if lead_flag == 'Y' and month(current_timestamp) in (1,4,7,10) and day(current_timestamp) <= 25:
        logMessage("Run Quarterly and Monthly Codes")
        sendEmail('Quarterly and Monthly Records to Score')
        sys.exit(-1)

我希望这段代码会向我发送电子邮件,但收到错误消息。

1 个答案:

答案 0 :(得分:0)

我的同事只是建议了一种简单的方法-效果很好:

def testing():
    conn = pymssql.connect(server='xx.xx.xx.xxx', user='user', password='password', database='database')
    stmt="select flag, month(current_timestamp) as month_today, day(current_timestamp) as day_today from dbo.score_flag"      
    lead_pd = pd.read_sql(stmt,conn)

    if lead_pd.at[0,'flag'] == 'Y' and lead_pd.at[0,'month_today'] in (1,4,7,10) and lead_pd.at[0,'day_today'] <= 25:
        logMessage("Run Quarterly and Monthly Codes")
        sendEmail('Quarterly and Monthly Records to Score')
        sys.exit(-1)