2017-10-27 7 views
0

私は2つの日付の間と特定のタイムスロットの間に一連のtstzrangeを生成しようとしています。PostgreSQL(定期的なタイムスロット)の2つの日付の間に一連の時間範囲を生成する

たとえば、10/27/2017から11/27/2017までの毎日(UTCの午後5時から午後9時)までの時系列を作成したいとします。 (当然、タイムゾーンを調整)

select * 
from generate_series(
    tstzrange(timezone('UTC', '2017-10-27 17:00'), timezone('UTC', '2017-10-27 21:00'), '[]'), 
    tstzrange(timezone('UTC', '2017-11-27 17:00'), timezone('UTC', '2017-11-27 21:00'), '[]'), 
    '1 day'::interval) timeslots; 

私の望ましい結果がされています:

次の擬似コードは失敗しますが、うまくいけば、私が達成しようとしているものを示して

["2017-10-27 17:00:00-04","2017-10-27 21:00:00-04"] 
["2017-10-28 17:00:00-04","2017-10-28 21:00:00-04"] 
["2017-10-29 17:00:00-04","2017-10-29 21:00:00-04"] 
         . 
         . 
         . 
["2017-11-25 17:00:00-04","2017-11-25 21:00:00-04"] 
["2017-11-26 17:00:00-04","2017-11-26 21:00:00-04"] 
["2017-11-27 17:00:00-04","2017-11-27 21:00:00-04"] 

はPostgreSQLで、このことが可能です、 最新バージョン?

答えて

2

どのようにこのようなものについて:

select 
    tstzrange(
     date + interval '17 hours', 
     date + interval '21 hours' 
    ) timeslots 
from 
    generate_series(
     '2017-10-27'::date, 
     '2017-11-27', 
     '1 day' 
    ) date; 
関連する問題