Postgresql 填充所有的時間點

最近使用有個業務需要展示20190101和20190106所有的時間段,例如

20190101
20190102
20190103
20190104
20190105
20190106

但是數據庫中存的只有以下

20190101
20190102
20190104
20190106

那我們需要把20190103、20190105填充進去。

方式一:
新建個存儲日期的temp表(把要展示的時間點插入進去),然後進行left join,這樣就能展示所有的時間點了。

select * from temp left join timeTable on

方式二:
使用generate_series函數定義:generate_series(start, stop, step interval)

select to_char(generate_series('20190101'::date,'20190106',
'1 day'),'yyyymmdd');
--查詢結果:
20190101
20190102
20190103
20190104
20190105
20190106

擴展:
–按天 查詢2019-01-01到現在的所有時間點

select to_char(generate_series('2019-01-01'::date,current_date,
'1 day'),'yyyy-mm-dd');

–按小時 查詢2019-11-06 00:00到8點鐘的所有時間點

select to_char(generate_series('2019-11-06 00:00'::date,'2019-11-06 08:00',
'1 HOUR'),'yyyy-mm-dd HH24:MI');

官網generate_series詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章