2014-02-22 151 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手册中显示的日期和时间运营。减去两个日期表示之间的天数。

顺便说一句我通常会安排这样一个范围的边界,以便只有一端是包容性的,即。开始< =日期<末,使减去结束 - 开始给天的实际数量。

相关问题