我怎么知道這兩個日期在開始日期和結束日期的范圍內?
例如,我在資料庫中有如下資料:
| ID | 開始日期 | 結束日期 |
|---|---|---|
| 1 | 2022-11-07 09:00:00 | 2022-11-07 16:00:00 |
| 2 | 2022-11-08 10:00:00 | 2022-11-08 12:00:00 |
Input:
start_date : '2022-11-07 08:00:00'
end_date : '2022-11-07 09:00:00'
如果我輸入上面的資料,這意味著資料不在范圍內嗎?但是當我使用這個查詢時,資料仍在范圍內
SELECT
start_date,
end_date,
FROM
table
WHERE
(start_date >= '2022-11-07 08:00:00' AND start_date <= '2022-11-07 09:00:00')
OR
(end_date >= '2022-11-07 08:00:00' AND end_date <= '2022-11-07 09:00:00')
你愿意幫助我嗎?先感謝您。
我想獲得兩個日期之間范圍的正確查詢
uj5u.com熱心網友回復:
處理范圍最簡單的方法是使用范圍型別
select *
from the_table
where tsrange(start_date, end_date) @> tsrange('2022-11-07 08:00:00', '2022-11-07 09:00:00');
是“@>包含”運算子,如果左側范圍完全包括右側的范圍,則為真。
以上將創建排除上限值的范圍。如果應包括結束時間,請使用例如tsrange(start_date, end_date, '[]')
或者,您可以使用符合標準的overlaps運算子:
select *
from the_table
where (start_date, end_date) overlaps (timestamp '2022-11-07 08:00:00', timestamp '2022-11-07 09:00:00');
然而,我不是 100% 兩種解決方案的行為相同,尤其是在邊緣情況下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532274.html
標籤:PostgreSQL日期
上一篇:PHP日期函式停留在11分鐘
