所以我有一個結構表:
events
----------
id
name
start_date
end_date
我需要為此事件建立一個日歷預覽。因此用戶可以選擇他們想要顯示的日期范圍。
假設我們有一些這樣的資料:
1 | event A | 01-02-2022 | 10-02-2022
所以有一個帶有兩個引數的請求,從和到引數,以便用戶可以選擇他們想要在日歷(前端)上顯示的日期,并將請求到后端
有以下三種情況:
- 用戶選擇
01-02-2022(28-02-2022每月) - 用戶選擇
06-02-2022(12-02-2022每周) 20-01-2022用戶選擇03-02-2022(自定義)
我希望這三個案例將顯示 id 為 1 的事件
問題是,如果我使用傳統的使用between查詢過濾器,它將生成如下查詢:
1. select * from events where start_date between '01-02-2022' and '28-02-2022'
2. select * from events where start_date between '06-02-2022' and '12-02-2022'
3. select * from events where start_date between '20-01-2022' and '03-02-2022'
對于第一種情況,它將顯示 id 為 1 的事件,因為start_date滿足between查詢。
但是對于第二種和第三種情況,并不是因為start_date不滿足between查詢。
我想要的是對于第二種和第三種情況,我的查詢也會回傳 id 為 1 的事件,因為在06-02-2022to12-02-2022和20-01-2022to之間03-02-2022有一些日期在事件 1 的開始和結束范圍內
誰能給我一個滿足的示例查詢?
uj5u.com熱心網友回復:
你沒有得到最后兩種情況是正確的,因為你沒有檢查end_date.
嘗試end_date在您的情況下也包括:
select * from events
where (start_date between '01-02-2022' and '28-02-2022') or (end_date between '01-02-2022' and '28-02-2022')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430027.html
