Skip to content

state_periods()

Get the time periods corresponding to a given state from a state aggregate

Since 1.15.0

List the periods when the system is in a specific state from a state aggregate. Periods are defined by the start time and end time.

If you have multiple state aggregates and need to interpolate the state across interval boundaries, use interpolated_state_periods.

Create a state aggregate and list all periods corresponding to the state OK.

SELECT start_time, end_time FROM state_periods(
(SELECT state_agg(ts, state) FROM states_test),
'OK',
);

Returns:

start_time | end_time
------------------------+------------------------
2020-01-01 00:00:11+00 | 2020-01-01 00:01:00+00
2020-01-01 00:01:03+00 | 2020-01-01 00:02:00+00

The syntax is:

state_periods(
agg StateAgg,
state [TEXT | BIGINT]
) RETURNS (TIMESTAMPTZ, TIMESTAMPTZ)
NameTypeDefaultRequiredDescription
aggStateAgg-A state aggregate created using state_agg
stateTEXTBIGINT-
ColumnTypeDescription
start_timeTIMESTAMPTZThe time when the state started (inclusive)
end_timeTIMESTAMPTZThe time when the state ended (exclusive)