


Pertanyaan Julat Masa Django: Mengapa parameter __Range tidak mengandungi tarikh akhir?
Soalan biasa dalam pertanyaan pelbagai masa Django: Mengapa parameter __range
kadang -kadang mengecualikan tarikh akhir? Artikel ini akan menjalankan analisis mendalam dan menyediakan penyelesaian.
Apabila menggunakan Django untuk pertanyaan pangkalan data, penapisan data berdasarkan julat masa adalah operasi biasa. Walau bagaimanapun, banyak pemaju menghadapi situasi di mana hasil pertanyaan secara tidak disangka tidak termasuk tarikh akhir yang ditentukan ( end_date
) apabila menggunakan parameter __range
. Ini bukan bug Django, tetapi ciri yang ditakrifkan oleh julat masa dalam pertanyaan pangkalan data.
Penerangan Masalah
Pemaju menggunakan kod berikut untuk pertanyaan:
hasil = AmazonHistoryPrice.Objects.Filter (pengenalan = pengenalan, created_at__range = [start_date, end_date]). order_by ('created_at'). semua ()
Struktur jadual pangkalan data adalah seperti berikut:
Buat jadual "Amazon_App_AmazonHistoryPrice" ("ID" Integer tidak NULL Autoincrement utama utama, "bulan" integer tidak null, "hari" integer tidak null, teks identifikasi "tidak null," integer "tidak null," tahun "integer tidak null," created_at "null);
Hasil yang diharapkan adalah untuk mendapatkan data antara start_date
dan end_date
, tetapi hasil sebenar mengabaikan data yang sepadan dengan end_date
.
Menyebabkan analisis
Parameter __range
Django mengikuti prinsip "kiri dan kanan", iaitu, ia termasuk tarikh permulaan dan tarikh akhir. Oleh itu, untuk memasukkan end_date
, tiada pengubahsuaian kod diperlukan. Masalahnya terletak pada sisihan dalam memahami prinsip "kiri dan kanan".
Penyelesaian
Jika matlamat anda adalah untuk memasukkan start_date
dan end_date
, maka __range
telah memenuhi keperluan dan tiada pengubahsuaian diperlukan. Jika medan created_at
dalam pangkalan data anda adalah ketepatan yang cukup tinggi dan jangkaan anda adalah untuk memasukkan start_date
tetapi tidak termasuk end_date
, maka __range
telah memenuhi keperluan anda.
Jika jangkaan anda adalah untuk memasukkan semua data sebelum start_date
dan end_date
, maka tidak perlu mengubah suai end_date
. __range
sendiri mengandungi tarikh akhir.
Kawalan yang lebih tepat
Untuk kawalan yang lebih tepat mengenai julat masa, adalah disyorkan untuk menggunakan __gte
(lebih besar daripada atau sama dengan) dan __lt
(kurang daripada) pengendali:
hasil = amazonHistoryPrice.Objects.Filter (pengenalan = pengenalan, created_at__gte = start_date, created_at__lt = end_date) .order_by ('created_at'). Semua ()
Kaedah ini melaksanakan pertanyaan selang "tertutup kiri dan terbuka betul", yang secara eksplisit termasuk start_date
, tetapi tidak termasuk end_date
. Ini memberikan logik pertanyaan yang lebih jelas dan mengelakkan potensi kesilapan pelarasan buatan kepada end_date
.
Kaedah yang mana untuk dipilih bergantung pada keperluan khusus dan definisi jangka masa. Memahami ciri -ciri julat masa dalam pertanyaan pangkalan data, serta pelbagai pengendali yang disediakan oleh Django Orm, adalah penting untuk menulis pertanyaan pangkalan data yang cekap dan tepat.
Atas ialah kandungan terperinci Pertanyaan Julat Masa Django: Mengapa parameter __Range tidak mengandungi tarikh akhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Adakah anda ingin tahu cara memaparkan kategori kanak -kanak di halaman arkib kategori induk? Apabila anda menyesuaikan halaman arkib klasifikasi, anda mungkin perlu melakukan ini untuk menjadikannya lebih berguna kepada pelawat anda. Dalam artikel ini, kami akan menunjukkan kepada anda bagaimana untuk memaparkan kategori kanak -kanak dengan mudah di halaman arkib kategori induk. Mengapa subkategori muncul di halaman arkib kategori induk? Dengan memaparkan semua kategori kanak -kanak di halaman arkib kategori induk, anda boleh menjadikannya kurang generik dan lebih berguna kepada pelawat. Sebagai contoh, jika anda menjalankan blog WordPress mengenai buku dan mempunyai taksonomi yang disebut "tema", anda boleh menambah sub-taksonomi seperti "novel", "bukan fiksyen" supaya pembaca anda dapat

Faktor kenaikan harga mata wang maya termasuk: 1. Peningkatan permintaan pasaran, 2. Menurunkan bekalan, 3. Berita positif yang dirangsang, 4. Sentimen pasaran optimis, 5. Persekitaran makroekonomi; Faktor penurunan termasuk: 1. Mengurangkan permintaan pasaran, 2. Peningkatan bekalan, 3.

Memahami rawak kebergantungan bulat dalam permulaan projek musim bunga. Semasa membangunkan projek musim bunga, anda mungkin menghadapi rawak yang disebabkan oleh kebergantungan bulat pada permulaan projek ...

JDBC ...

Kenapa nilai pulangan kosong apabila menggunakan redistemplate untuk pertanyaan batch? Apabila menggunakan Redistemplate untuk operasi pertanyaan batch, anda mungkin menghadapi hasil yang dikembalikan ...

Mengenai sebab mengapa redistemplate.OpsForList (). LeftPop () tidak menyokong nombor lulus. Apabila menggunakan Redis, banyak pemaju akan menghadapi masalah: mengapa redistempl ...

Perbezaan utama antara Laravel dan Yii adalah konsep reka bentuk, ciri -ciri fungsional dan senario penggunaan. 1. Laravel memberi tumpuan kepada kesederhanaan dan keseronokan pembangunan, dan menyediakan fungsi yang kaya seperti alat eloquentorm dan artisan, sesuai untuk pembangunan dan pemula yang pesat. 2.YII menekankan prestasi dan kecekapan, sesuai untuk aplikasi beban tinggi, dan menyediakan sistem Activerecord dan cache yang cekap, tetapi mempunyai lengkung pembelajaran yang curam.

Perbincangan mengenai sebab -sebab mengapa JavaScript tidak dapat memperoleh maklumat perkakasan komputer pengguna dalam pengaturcaraan harian, banyak pemaju akan ingin tahu tentang mengapa JavaScript tidak dapat diperoleh secara langsung ...
