最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django之如何按日期查詢數(shù)據(jù)

 更新時間:2023年08月12日 15:19:42   作者:zhen24  
這篇文章主要介紹了django之如何按日期查詢數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

django按日期查詢數(shù)據(jù)

1、數(shù)據(jù)庫模型 。

from django.db import models
class Get_time(models.Model):
    '''測試'''
    name = models.CharField(max_length=12)
    time= models.DateTimeField(auto_now_add=True)

2、序列化和分頁。 

from rest_framework import serializers
from knife_manage import models
class Get_time_Serializer(serializers.ModelSerializer):
    '''序列化'''
    class Meta:
        model = models.Get_time
        fields = '__all__'
class PageNumber(PageNumberPagination):
    '''分頁'''
    page_size = 50
    page_size_query_param = 'size'
    max_page_size = 5
    page_query_param = 'page'

3、路由。

url(r'^/test/$', views.Timeview.as_view({'get':'filter','post':'post'})),

4、視圖。

 
class Timeview(ModelViewSet):
    authentication_classes = []   # 取消用戶認證
    queryset = models.Get_time.objects.all()
    serializer_class = Get_time_Serializer  # 序列化數(shù)據(jù)
    pagination_class = PageNumber()  # 分
    def filter(self, request, *args, **kwargs):
        """多條件查詢匹配"""
        queryset = models.Get_time.objects.filter(time__year = 2020) # 按年查詢
        queryset = models.Get_time.objects.filter(time__month = 12)  # 按月查詢
        queryset = models.Get_time.objects.filter(time__day= 9)  # 按日查詢
        now = datetime.datetime.now()
        start = now-datetime.timedelta(hours=12, minutes=0, seconds=0)
        queryset = models.Get_time.objects.filter(time__gt= start) # 大于某個日期
        queryset = models.Get_time.objects.filter(time__lt= start) # 小于某個日期
        start_date = datetime.date(2009, 1, 1)
        end_date = datetime.date(2020, 3, 31)
        queryset = models.Get_time.objects.filter(time__range=(start_date, end_date)) # 按區(qū)間查詢
        queryset = models.Get_time.objects.filter(time__week_day=4) # 按星期幾查詢
        pager_size = self.pagination_class.paginate_queryset(queryset=queryset, request=request, view=self)
        ser = self.serializer_class(instance=pager_size, many=True)
        return self.pagination_class.get_paginated_response(ser.data)
    def post(self, request, *args, **kwargs):
         """新增"""
        try:
            import random
            name=random.randint(10000,99999)
            return Response({'info': '操作成功!', 'code': 200})
        except Exception:
            return Response({'info': '操作失??!', 'code': 400})

5、結(jié)果:

6、extra。

1)、用戶選擇日歷查詢。

range=['2019-03-04', '2019-06-24']  # 前臺傳過來的數(shù)據(jù)
start=[int(x) for x in range[0].split('-')]
end=[int(x) for x in range[1].split('-')]
start_date = datetime.date(start[0], start[1],start[2])
end_date = datetime.date(end[0],end[1],end[2])

 2)、用戶選擇特定日期。

未設(shè)置時區(qū)時的操作

request_time='2012-09-09'
time_split=[int(x) for x in request_time.split('-')]
times='%s-%s-%s'%(time_split[0],time_split[1],time_split[2]+1)
cday = datetime.strptime(times, '%Y-%m-%d')
models.Get_time.objects.create(name=name,time=cday)?

設(shè)置時區(qū)時的操作

配置文件設(shè)置時區(qū):

TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = False?

視圖:

request_time='2012-09-09'
cday = datetime.strptime(request_time, '%Y-%m-%d')
models.Get_time.objects.create(name=name,time=cday)

django ORM查詢指定日期范圍內(nèi)的數(shù)據(jù)

 dt_s= datetime.now().date()  # 2018-7-15
 dt_e = (dt_s- timedelta(7))  # 2018-7-08
 objs = Record.objects.filter(end_time__range=[dt_s, dt_e])
 objs = Record.objects.filter(Q(end_time__=dt_s) & Q(end_time__lt=dt_e)) # 效果相同

end_time為datetime類型數(shù)據(jù)

idend_timevalue
12018-07-09 04:23:161
22018-07-015 04:23:163

使用上面的命令返回的結(jié)果為第一條,以下是ORM封裝的SQL語句,因為2018-07-15 04:23:16 比 2018-07-15大

select * from record where end_time between 2018-07-08 and 2018-07-15;

You can use range anywhere you can use BETWEEN in SQL — for dates, numbers and even characters.
Warning
Filtering a DateTimeField with dates won’t include items on the last day, because the bounds are interpreted as “0am on >the given date”. If pub_date was a DateTimeField, the above expression would be turned into this SQL:
SELECT … WHERE pub_date BETWEEN ‘2005-01-01 00:00:00’ and ‘2005-03-31 00:00:00’;
Generally speaking, you can’t mix dates and datetimes.

要將end_time轉(zhuǎn)換為日期,就能返回兩條數(shù)據(jù)了

select * from record where date(end_time) between 2018-07-08 and 2018-07-15;

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程

    pyqt5、qtdesigner安裝和環(huán)境設(shè)置教程

    這篇文章主要介紹了pyqt5、qtdesigner安裝和環(huán)境設(shè)置方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 50行Python代碼帶你打造一個桌面AI Agent

    50行Python代碼帶你打造一個桌面AI Agent

    近期熱榜都被 OpenClaw 刷屏了,但桌面 Agent 的核心原理就是截圖-看圖-操作循環(huán),使用 pyautogui+ Vision API,50 行 Python就能造一個能用的桌面 Agent,下面小編就和大家詳細介紹一下吧
    2026-03-03
  • python3操作mysql數(shù)據(jù)庫的方法

    python3操作mysql數(shù)據(jù)庫的方法

    這篇文章主要介紹了python3操作mysql數(shù)據(jù)庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 基于python不同開根號的速度對比分析

    基于python不同開根號的速度對比分析

    這篇文章主要介紹了基于python不同開根號的速度對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python?tkinter?列表框Listbox屬性詳情

    Python?tkinter?列表框Listbox屬性詳情

    這篇文章主要介紹了Python?tkinter?列表框Listbox屬性詳情,列表框控件顯示多行文本,用戶可以選中一行或者多行。所有的文本只能使用一種字體,不能混合使用多種字體
    2022-07-07
  • Python三百行代碼實現(xiàn)飛機大戰(zhàn)

    Python三百行代碼實現(xiàn)飛機大戰(zhàn)

    飛機大戰(zhàn)想必大家可能玩過微信的這款小游戲,給我的感覺是這款游戲怎么可以做得這么好呢,操作簡單,容易上手,簡直是“老少皆宜”啊,既然這款游戲這么棒,能否自己動手用 Python 來實現(xiàn)呢?事實證明是可以的
    2022-09-09
  • Python word文本自動化操作實現(xiàn)方法解析

    Python word文本自動化操作實現(xiàn)方法解析

    這篇文章主要介紹了Python word文本自動化操作實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 使用Python刪除Excel中的行列和單元格示例詳解

    使用Python刪除Excel中的行列和單元格示例詳解

    在處理Excel數(shù)據(jù)時,刪除不需要的行、列或單元格是一項常見且必要的操作,本文將使用 Python腳本實現(xiàn)對 Excel 表格的高效自動化處理,感興趣的可以了解下
    2025-07-07
  • Python 類的特殊成員解析

    Python 類的特殊成員解析

    這篇文章主要介紹了Python 類的特殊成員介紹,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • python中的多線程鎖lock=threading.Lock()使用方式

    python中的多線程鎖lock=threading.Lock()使用方式

    這篇文章主要介紹了python中的多線程鎖lock=threading.Lock()使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

哈尔滨市| 丰顺县| 平湖市| 塔河县| 花莲县| 子长县| 靖州| 泰来县| 凌海市| 铁岭县| 宝坻区| 桃园市| 杭锦旗| 泾源县| 汾西县| 内江市| 扶余县| 丹凤县| 海南省| 烟台市| 石城县| 乐东| 防城港市| 泽州县| 海门市| 木兰县| 安阳县| 茂名市| 大英县| 玉溪市| 故城县| 香格里拉县| 乌拉特后旗| 蒲江县| 保德县| 德惠市| 麻城市| 阳泉市| 新密市| 登封市| 江陵县|