2014-02-22 190 views
0

每個記錄讀取「天」記載有「日期範圍」,由start_dateend_date列表示。當start_date和end_date是相同的日期值時,該記錄跨越一天。PG:使用起始日期日期和結束日期列

+-----------+------------+------------+ 
| foo_count | start_date | end_date | 
+-----------+------------+------------+ 
|  25 | 2014-02-11 | 2014-02-17 | <- spans one week 
|  30 | 2014-02-20 | 2014-02-20 | <- spans one day 
|  15 | 2014-02-21 | 2014-02-21 | <- spans one day 
|  45 | 2014-02-22 | 2014-02-22 | <- spans one day 
+-----------+------------+------------+ 

有沒有一種方法來獲取紀錄,代表了單日(即起始日期日期和結束日期的比賽)?

+1

我中有你沒有解釋正確,因爲答案太簡單了... WHERE START_DATE = END_DATE問題的感覺? – harmic

+0

哈哈,我不知道我能更好解釋,但在這裏不用...「事件」表中有跨越不同的日期範圍事件。有些事件可能會持續一週(見我例子中的第一行),有些事件可能只持續一天(參見示例中的最後三行)。我只想獲取僅限一天的活動。 – imderek

+0

在這種情況下,在我先前的評論在WHERE子句應該工作 – harmic

回答

2

要匹配跨越單日記錄:

SELECT * FROM footable WHERE start_date = end_date; 

要匹配跨越一週記錄:

SELECT * FROM footable WHERE end_date - start_date = 6; 

This page手冊中顯示的日期和時間運營。減去兩個日期表示之間的天數。

順便說一句我通常會安排這樣一個範圍的邊界,以便只有一端是包容性的,即。開始< =日期<末,使減去結束 - 開始給天的實際數量。

相關問題