Python Sqlalchemy按日期范围过滤

时间:2018-04-24 03:41:45

标签: python django python-3.x sqlalchemy

我有两个日期选择器字段,我希望用户从日期到结束日期进行选择。我想在所选的两个日期之间显示数据。从示例表格日期:2/14/2018到日期:3/15/2018。当调用该函数时,我想在这两个日期之间提取和显示数据。

我只需要一些查询帮助即可完成。

我正在使用sqlalchemy从mssql db中提取数据

这是我的代码。两个日期选择器selectdate和selectdate1然后转换为julian日期。转换和转换1,我需要一些帮助的神奇的查询。

def bydate_display(request):
    if "selectdate" in request.POST:
        if "selectdate1" in request.POST:
            if "selectaccount" in request.POST:
                selected_date = request.POST["selectdate"]
                selected_date1 = request.POST["selectdate1"]
                selected_acc = request.POST["selectaccount"]
            if selected_date==selected_date:
                if selected_date1==selected_date1:
                    if selected_acc==selected_acc:
                        convert=datetime.datetime.strptime(selected_date, "%Y-%m-%d").toordinal()
                        convert1=datetime.datetime.strptime(selected_date1, "%Y-%m-%d").toordinal()
                        engine=create_engine('mssql+pymssql://username:password@1hostname /db')
                        connection=engine.connect()
                        metadata=MetaData()
                        fund=Table('gltrxdet',metadata,autoload=True,autoload_with=engine)
                        rate=Table('gltrx_all',metadata,autoload=True,autoload_with=engine)

                        stmt=select         ([fund.columns.account_code,fund.columns.description,fund.columns.nat_balance,fund.columns.rate_type_home,rate.columns.date_applied,rate.columns.date_entered,fund.columns.journal_ctrl_num,rate.columns.journal_ctrl_num])
                    #stmt = select([fund, rate]).where (and_(fund.columns.journal_ctrl_num==rate.columns.journal_ctrl_num))
                        stmt=stmt.where(and_         (rate.columns.journal_ctrl_num==fund.columns.journal_ctrl_num,fund.columns.account_code==selected_acc,rate.columns.date_applied==convert,rate.columns.date_applied==convertconvert1))
                        #stmt=stmt.where(or_(rate.columns.date_applied==convert,rate.columns.date_entered==convert1))
                        results=connection.execute(stmt).fetchall()


                        return render(request,'bydatedisplay.html',locals())

0 个答案:

没有答案