PG:使用start_date和end_date列获取“day”记录

时间:2014-02-22 23:58:32

标签: postgresql

每条记录都有一个“日期范围”,由start_dateend_date列表示。当start_date和end_date是相同的日期值时,该记录跨越一天。

+-----------+------------+------------+
| 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
+-----------+------------+------------+

有没有办法获取代表单日 记录(即start_date和end_date匹配)?

1 个答案:

答案 0 :(得分:2)

匹配跨越一天的记录:

SELECT * FROM footable WHERE start_date = end_date;

匹配一周内的记录:

SELECT * FROM footable WHERE  end_date - start_date = 6;
手册中的

This page显示了日期和时间运算符。减去两个日期会给出之间的天数。

顺便说一下,我通常会安排这样一个范围的边界,这样只有一端是包容性的,即。开始&lt; = date&lt;结束,所以减去结束 - 开始给出实际的天数。