mysql傳入時間段查詢是否有重疊,交叉的資料

2021-10-02 02:27:23 字數 852 閱讀 8957

自己在寫功能的時候遇到了很多次這個問題,測了好幾次才測試出來了乙個方法,但是感覺我自己的方法有點麻煩,今天搜了一下,方法大概就兩種,怕忘記就記下來吧。

第一種

這種方法是最簡單的了。

只能有四種結果:

true,true;

false,false;

true,false;

false,true;

首先,第乙個判斷如果為false,那這段時間肯定是不會交叉的,因為開始時間就在結束時間後了

第二個判斷如果為false,傳入的結束日期在資料庫的開始日期欄位前,那肯定也不會重疊或者交叉了。

-- 傳入引數		資料庫字段

'2020-01-05'<=end_date and '2020-01-10'>=start_date

第二種

這一種是我使用的方法,加括號是為了更容易看懂,但還是沒有第一種方法好,第一種方法明顯少了很多,且容易看懂

( 

-- 這是查詢傳入的兩個日期有沒有包含在要對比的兩個欄位的範圍內

('2019-06-05' between start_date and end_date or '2019-09-05' between start_date and end_date)

or -- 這個剛好相反,是查詢要對比的兩個欄位在不在傳入的日期範圍內

(start_date between '2019-06-05' and '2019-09-05' or end_date between '2019-06-05' and '2019-09-05')

)

mysql查詢兩個時間段是否有交集

1.需求 查詢兩個時間段是否有交集 2.分析 分為三種情況 入參 查詢開始時間,查詢結束時間 資料庫字段 start date,end date 2.1 查詢開始時間在start date與end date之間,則肯定有交集 2.2 查詢結束時間在start date與end date之間,則肯定有...

sql 時間段交叉查詢是否有交集

雙11 活動結束時間大於當前伺服器時間代表有效期的活動 實現1 select from prodcar a where a.enddate getdate and a.enddate 2019 11 07 00 00 00.000 and 2019 11 07 18 00 00.000 a.begi...

MySql時間段查詢語句

今天 select fullname,addedtime from t user where to days addedtime to days now 昨天 select fullname,addedtime from t user where to days now to days addedt...