簡體   English   中英

MySQL獲取兩個日期變量之間/以上的記錄

[英]MySQL get records between / over above two date variables

我有一個MySQL問題。 我在下面的示例中使用Laravel,但我的問題與MySQL有關。

假設我有一個約會表。 約會可以是任何持續時間。

所以我有2個約會。

  1. 預約A:2019年3月2日上午10點至上午11點
  2. 預約B:2019年3月1日從11pm-2019年3月2日9am

所以; 如果II在3月1日至2日之間搜索記錄-我將獲得2個結果。 例如“日期<= 3月1日和<= 3月2日”

不要介意該命令-它只是一個例子。

我的底線是,如果我搜索3月1日至2日之間的記錄,則會得到兩次約會。

我的問題不過; 如果我從4月29日至3月4日有活動怎么辦?

舉個例子;

  1. 預約A:2019年3月2日上午10點至上午11點
  2. 預約B:2019年3月1日從11pm-2019年3月2日9am
  3. 預約C:4月29日3pm-3月4日4pm

因此,如果我有兩個約會,並且說“日期> = 2019-03-01和<= 2019-03-02”,那么我仍然會獲得約會A和約會B。

但實際上,由於任命C,該空間將被占用

我如何仍可以搜索兩個日期變量之間的記錄-但也可以找到約會C?

因此,基本上,在繪制/編譯日歷時,我將擁有日歷表並看到約會A和約會B-但我也應該將約會C視為全天活動。

我不想從數據庫中選擇所有約會記錄並對它們進行排序-我希望有一個更好的解決方案。

時間 假設我們必須找到在t1和t2之間發生的事件。 例如,我們的事件跨越a1和a2,b1和b2以及c1和c2。

根據您所說的,下一個公式將滿足您的要求:

  1. 如果事件在請求的t1之前開始,則它必須在t1之后結束
  2. 如果事件是在事件之后(或在t1)開始的,則需要檢查事件是否在請求的t2之前開始。
SELECT * FROM some_table WHERE (start_date < t1 AND end_date > t1) OR (start_date >= t1 AND start_date < t2)

這里t1t2是請求范圍的邊界, start_dateend_date是在MySQL中存儲相應數據的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM