最近使用有個業務需要展示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');