5分ごとに24時間シリーズを生成するとします。 PostgreSQLでそれを行うにはどうすればよいですか?
PostgreSQLは generate_series()
をtimestamp
から取得できますが、time
からは取得できません。
任意のタイムスタンプを選択する方が良いですか、それともシリーズを生成する別の方法がありますか?
最適化するには:
SELECT x::time
FROM generate_series(timestamp '2000-01-01 00:00'
, timestamp '2000-01-02 00:00'
, interval '5 min') t(x);
日付は無関係なので、任意のタイムスタンプ定数を使用します。 time
へのキャストは非常に安価です。
これには下限と上限が含まれるため、'00:00'
twice。使用する '2000-01-01 23:59'
上限として、一度だけ取得します。
関連:
これが最善の方法かどうかはわかりませんが、_generate_series
_を使用して_00:00:00
_から最小オフセットを生成し、make_interval(mins=>)
を呼び出してそこから間隔を取得できます。
_SELECT make_interval(mins=>x)::time
FROM generate_series(0, 60*24-5, 5) AS t(x);
_
私は@EvanCarrollの方法が好きでしたが、さらに別のオプション-
select x::time
from generate_series
(current_date,current_date + '1 day - 1 second'::interval,'5 minute') as t(x);
別の方法:
SELECT '00:00:00'::time + x * '1 minute'::interval
FROM generate_series(0, 60*24, 5) AS t(x);