たとえば、5分ごとに24時間シリーズを生成するとします。PostgreSQLでそれを行うにはどうすればよいですか?
PostgreSQLはgenerate_series()
からはできますが、からはできtimestamp
ませんtime
。
任意のタイムスタンプを選択する方が良いですか、それともシリーズを生成する別の方法がありますか?
たとえば、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'
2回取得されます。'2000-01-01 23:59'
上限として使用して、一度だけ取得します。
関連:
私は@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);