Postgresql 使用序列號生成函數 生成連續日期

項目中交易記錄進行統計查詢時,須要對一段時間連續日期內交易數據進行統計,
由於指定時間段內某些日期可能沒有交易數據,因此須要補齊。

使用 postgresql序列生成函數,生成連續日期,再進行查詢。 sql

以下: 函數

序列號生成函數 post

函數 參數類型 返回類型 描述
generate_series(start,stop) int或bigint setof int或setof bigint(與參數類型相同)) 生成一個數值序列,從start到stop,步長爲1 。
generate_series(start,stop,step) int或bigint setof int或setof bigint(與參數類型相同)) 生成一個數值序列,從start到stop,步長爲step。
generate_series(start,stop,step) timestamp或timestamp with time zone setof timestamp或setof timestamp with time zone(與參數類型相同) 生成一個數值序列,從start到stop,步長爲step。
 
網上有人的用法(以下),先計算日期相差天數,查詢中進行日期累加,我以爲反而變複雜了
select to_char(cast('20081001' as date) + s.a,'yyyyMMdd') as 統計日期  from generate_series(0, cast('20081031' as date)-cast('20081001' as date),1) as s(a) 

 
postgresql中給的例子是:
SELECT * FROM generate_series('2008-03-01 00:00'::timestamp, '2008-03-04 12:00', '10 hours'); 
generate_series --------------------- 
2008-03-01 00:00:00 
2008-03-01 10:00:00 
2008-03-01 20:00:00 
2008-03-02 06:00:00 
2008-03-02 16:00:00 
2008-03-03 02:00:00 
2008-03-03 12:00:00 
2008-03-03 22:00:00 
2008-03-04 08:00:00 
(9 rows)  

稍做修改以下:
SELECT to_char(a,'yyyyMMdd') FROM generate_series('2008-03-01'::date,'2008-03-04', '1 days') as a; 
"20080301"
"20080302"
"20080303"
"20080304"
 知足如今使用場景。
相關文章
相關標籤/搜索