簡體   English   中英

在兩個日期之間選擇事件的最佳 SQL 查詢

[英]Best SQL query to select events between two dates

在閱讀了很多關於這個的帖子之后。 我需要一種在兩個日期之間選擇事件的好方法。 可能的條件如下圖所示:

事件的日期范圍

我的第一次嘗試如下:

SELECT *
FROM events
WHERE 
(
 start_date BETWEEN $start_select AND  $end_select
 OR
 end_date BETWEEN $start_select AND $end_select
)
OR
(
 start_date <=  $start_select
 AND
 end_date >= $end_select
)

問題是進行查詢需要很長時間。

然后我看到了這篇文章: 從兩個日期之間的日期范圍中選擇數據,@dmlukichev 談到排除所有錯誤的選項:

像這樣的東西:

SELECT *
FROM events
WHERE NOT 
(
 start_date <  $start_select
 OR
 end_date > $end_select
)

但這對我不起作用。

有任何想法嗎?

如果我的條件正確,這就是您所需要的。

SELECT * FROM events WHERE (end_date >=  $start_select AND start_date <= $end_select);

您將獲得開始日期在 $end_select 之前且結束日期在 $start_select 之后的所有事件。

可能有點晚(4 年),但我使用:

SELECT * FROM events WHERE  (end_date > $start_select AND start_date BETWEEN $start_select AND $end_select
    OR start_date < $end_select AND end_date BETWEEN $start_select AND $end_select
    OR (start_date < $start_select AND end_date > $end_select) BETWEEN $start_select AND $end_select
    )

暫無
暫無

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

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