自己在寫功能的時候遇到了很多次這個問題,測了好幾次才測試出來了乙個方法,但是感覺我自己的方法有點麻煩,今天搜了一下,方法大概就兩種,怕忘記就記下來吧。
第一種
這種方法是最簡單的了。
只能有四種結果:
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...