我有以下問題:兩個日期列,一個日期。我如何獲取數據?
在mysql中,我有一個表,其中包含兩個日期列start_date和end_date。日期格式爲yyyy-mm-dd。我想要做的是從特定日期的所有行中獲取所有數據,可以說'2012-03-05'列出了這些日期列之一或之間的內容。
如何創建一個很好的獲取所需數據的sql查詢?我已經檢查了兩者之間的關係,但我不確定這是否是最好的選擇。我想這通常是一個簡單的任務,但我無法找出一個好的查詢。
謝謝。
我有以下問題:兩個日期列,一個日期。我如何獲取數據?
在mysql中,我有一個表,其中包含兩個日期列start_date和end_date。日期格式爲yyyy-mm-dd。我想要做的是從特定日期的所有行中獲取所有數據,可以說'2012-03-05'列出了這些日期列之一或之間的內容。
如何創建一個很好的獲取所需數據的sql查詢?我已經檢查了兩者之間的關係,但我不確定這是否是最好的選擇。我想這通常是一個簡單的任務,但我無法找出一個好的查詢。
謝謝。
這是一種使用日期範圍來構建表格的非常常見的方法,特別是在temporal database設計中。它可以讓你非常有效地執行基於範圍的查詢,假設兩列的索引都存在。您查詢的數據是這樣的:
select *
from mytable t
where t.start_date <= @desired_date and t.endDate > @desired_date
@desired_date
是您想查詢,例如日期'2012-03-05'。
注意<=
在另一面,>
在另一面,沒有=
。這樣做是爲了確保起始範圍定義非重疊間隔。
不知道,嘗試是這樣的:
SELECT
*
FROM
mytable
WHERE
'2012-03-05' BETWEEN start_date AND end_date
我想我可以做類似SELECT * FROM測試,其中起始日期<= '2012-03-05' 日期和結束日期> =「2012- 03-05' 。但是有更好的方法嗎? – Ms01 2012-02-29 21:53:29
如果與'start_date' /'end_date'的間隔結束,通常只有其中一個包含*; *另一個是*獨佔*。這樣做是爲了確保多個記錄不匹配具有相同日期的查詢。哪一個是包容性的,哪一個不依賴於你的數據庫設計。 – dasblinkenlight 2012-02-29 22:01:38