我的表presences包含員工在場的時間范圍。范圍有start日期和end日期。
我知道如何選擇日期范圍內的日期,只需使用BETWEEN但是,我想做的是提供給定的日期范圍,例如2022-04-04 to 2022-04-06,我想獲取員工至少一天可用的所有行給定范圍的。
當presences表中有一行從 2022-01-01 開始,到 2022-12-31 結束,這意味著員工每天都在,那么必須回傳該行,因為提供的范圍在存在范圍內。
另一個示例,員工僅在 2022-04-05 出現,則此行也必須回傳,因為該員工在提供范圍內至少出現一次。
這是我到目前為止得到的一個小提琴: http ://sqlfiddle.com/#!9/2b3506/4
uj5u.com熱心網友回復:
您可以比較查詢日期范圍start的結束日期和end開始日期的日期值:
SELECT *
FROM presences
WHERE DATE(start) <= '2022-04-06' AND DATE(end) >= '2022-04-04';
請參閱演示。
uj5u.com熱心網友回復:
如果該列已經是日期型別,則不需要添加DATE,也許,如果它不是日期,則需要將其轉換為日期。但這會起作用:
SELECT *
FROM presences
WHERE start >= '2022-04-04' AND end <= '2022-04-06';
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/447514.html
上一篇:如何在R中獲得獨家日期范圍?
下一篇:將用戶指定的日期添加到現有代碼
