大佬教程收集整理的这篇文章主要介绍了如何按日期搜索?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从数据库中搜索两个日期范围之间的记录。这是我的代码 意见:
def profile(request):
if request.method == 'POST':
fromdate = request.POST.get('from')
todate = request.POST.get('to')
cursordate = connection.cursor()
cursordate.execute('SELECT * FROM Lesson WHERE StartDateTime between "'+fromdate+'" and "'+todate+'"'
)
data = dictfetchall(cursordate)
return render(request,'personal.HTML',{'data':data})
else:
cursordate = connection.cursor()
cursordate.execute('SELECT * FROM Lesson')
data = dictfetchall(cursordate)
return render(request,{'data':data})
HTML:
{% for lesson in data1 %}
<div class="card mb-3 mt-1 shadow-sm">
<div class="card-body">
<p class="card-text">
<div class="row">
<div class="col-2">
<div>{{ lesson.StartDateTime}} - {{ lesson.EndDateTime}}</div>
</div>
<div class="col-4">
<div>{{ lesson.name }}</div>
</div>
</div>
<div class="mt-5"></div>
</p>
</div>
</div>
{% endfor %}
但我收到以下错误:
InvalID column name "2021-03-02". (207) (sqlExecDirectW); [42S22] [Microsoft][ODBC Driver 17 for sql Server][sql Server]InvalID column name "2021-03-03". (207)')
这是否与“StartDateTime”的类型是DateTime 而不是Date 这一事实有关? 但是,我尝试在 sql 查询中将日期与时间进行硬编码,但仍然失败。 (我知道在ORM Django的帮助下可能会完成,但我需要使用原始sql)
上面的查询也可以通过ORM实现,写成
Lesson.objects.filter(StartDateTime__gte=fromdate,StartDateTime__lt=to_date)
,
您可以将参数作为参数传递,因此:
fromdate = request.POST.get('from')
todate = request.POST.get('to')
with connection.cursor() as cursordate:
cursordate.execute(
'SELECT * FROM Lesson WHERE StartDateTime BETWEEN %s AND %s;'
[fromdate,todate]
)
如果 fromdate
是例如 '2021-03-25'
并且 todate
是 '2021-04-13'
,那么我们可以过滤在这些日期之间开始的 Lession
。
然而,使用原始查询不是一个好主意。通过使用问题中的字符串格式化查询,您可以使 Web 应用程序容易受到 SQL injection [wiki] 的攻击。此外,它需要手动进行各种反序列化。
通过使用 Django ORM,我们可以使用:
fromdate = request.POST.get('from')
todate = request.POST.get('to')
Lession.objects.filter(StartDateTime__range=(fromdate,todate))
由于我们在这里检索数据,而不是更改/更新/删除/创建数据,因此这通常是通过 GET 请求而不是 POST 请求完成的。
以上是大佬教程为你收集整理的如何按日期搜索?全部内容,希望文章能够帮你解决如何按日期搜索?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。