我有一個表,其中的開始和結束欄位的值是:
start | end
2021-09-24 17:00:00 | 2021-10-01 08:00:00
我已經一頭霧水,想不明白為什么這條陳述句什么結果都沒有:
SELECT *
FROM `oncall`。
WHERE `start` >= '2021-10-01 02:00:00'
and `end` <= '2021-10-01 08:00:00'
盡管我的例子行中的日期范圍包含上述范圍。
我試圖在資料庫中找到任何與值的起點和終點相重疊的行。
uj5u.com熱心網友回復:
看看你的資料庫中的條目和你使用的查詢,似乎你實際上是在尋找一個日期間隔的overlap查詢,即一個檢查[2021-10-01 02:00:00, 2021-10-01 08:00:00)是否與[2021-09-24 17:00:00, 2021-10-01 08:00:00)重疊的查詢方法。
SELECT *
FROM `oncall`。
WHERE @d2 > `start` AND `end` >/span> @d1
--用實際值替換@d1和@d2。
注意,這個查詢適用于所有種類的重合。例如,如果你的資料庫中有這樣一對日期:
2021-10-11 | 2021-10-15
那么所有這些輸入對都將匹配:
2021-10-01 | 2021-10-12
2021-10-14 | 2021-10-20
2021-10-01 | 2021-10-20
2021-10-11 | 2021-10-14
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328870.html
標籤:
上一篇:如何減少此函式中的遞回
