簡體   English   中英

我如何在MySQL中查詢兩個日期,其中datefrom在同一表的第二列中?

[英]How do I query two dates in mysql where the datefrom is in one column and dateto is in the second column of the same table?

我有一個酒店預訂系統MySQL數據庫,其中有一個表'bookings'。 “預訂”表包括兩列,即datefrom(簽入)和dateto(簽出),其數據類型為DATE。 我需要查詢數據庫以顯示兩個可搜索日期之間的所有預訂。

我的代碼如下:

SELECT * FROM bookings WHERE datefrom '2018-06-01' AND '2018-06-07';

這將返回開始日期介於這兩個日期之間的所有預訂,但我需要對查詢進行調整,以包括日期開始於“ 2018-06-01”之前但包含上面查詢中顯示的日期范圍的預訂。 我了解DATEDIFF函數,但不確定如何/是否可以使用它返回一個日期,例如,從“ 2018-05-23”開始並完成“ 2018-06-02”(在上述日期范圍內) 。

我認為您需要以下邏輯:

SELECT b.*
FROM bookings b
WHERE b.datefrom <= '2018-06-07' AND
      b.datefrom >= '2018-06-01'; 

這將為您提供與該期間重疊的所有預訂。

以下邏輯檢查日期范圍是否重疊:

where start1 <= end2 and end2 >= start1

例如在“ 2018-06-01”和“ 2018-06-07”之間找到匹配的行

WHERE datefrom <= '2018-06-07'
  AND dateto >= '2018-06-01'

根據您的邏輯,您可能需要將>=切換到>

暫無
暫無

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

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