我有一个包含以下数据的数据库表:
ID | Date | Bla
1 | 2013-05-01 | 1
2 | 2013-05-02 | 2
3 | 2013-05-03 | 3
4 | 2013-05-05 | 4
请注意缺少日期:2014-05-04
。我应该如何更改以下查询:
SELECT *
FROM table
where DATE >= '2013-05-01' AND DATE <= '2013-05-05'
所以我最终会得到以下输出:
ID | Date | Bla
1 | 2013-05-01 | 1
2 | 2013-05-02 | 2
3 | 2013-05-03 | 3
null | 2013-05-04 | null
4 | 2013-05-05 | 4
这可能吗?
最佳答案
您可以加入 generate_series
输出:
select
'2013-05-01'::date + g.o AS "date with offset"
from
generate_series(0, 30) AS g(o)
输出:
"2013-05-01"
"2013-05-02"
"2013-05-03"
...
"2013-05-29"
"2013-05-30"
"2013-05-31"
或者...在定义新的存储过程之后更简单的方法:)
CREATE OR REPLACE FUNCTION generate_series(date, date) RETURNS
SETOF date AS $$
SELECT $1 + g.s
FROM generate_series(0, ($2 - $1)) AS g(s);
$$ LANGUAGE SQL IMMUTABLE;
就这样调用它:
SELECT * FROM generate_series(start_date, end_date);
关于sql - PostgreSQL 增量日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471385/