---
title: duration_in() | Tiger Data Docs
description: Calculate the total time spent in a given state from a state aggregate
---

Early access [1.5.0](https://github.com/timescale/timescaledb-toolkit/releases/tag/1.5.0)

Calculate the total time spent in the given state from a state aggregate. If you need to interpolate missing values across time bucket boundaries, use [`interpolated_duration_in`](/docs/reference/toolkit/state-tracking/compact_state_agg/interpolated_duration_in#arguments/index.md).

## Samples

Create a test table that tracks when a system switches between `starting`, `running`, and `error` states. Query the table for the time spent in the `running` state.

If you prefer to see the result in seconds, [`EXTRACT`](https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT) the epoch from the returned result.

```
SET timezone TO 'UTC';
CREATE TABLE states(time TIMESTAMPTZ, state TEXT);
INSERT INTO states VALUES
  ('1-1-2020 10:00', 'starting'),
  ('1-1-2020 10:30', 'running'),
  ('1-3-2020 16:00', 'error'),
  ('1-3-2020 18:30', 'starting'),
  ('1-3-2020 19:30', 'running'),
  ('1-5-2020 12:00', 'stopping');


SELECT toolkit_experimental.duration_in(
  toolkit_experimental.compact_state_agg(time, state),
  'running'
) FROM states;
```

Returns:

```
duration_in
---------------
3 days 22:00:00
```

The syntax is:

```
duration_in(
  agg CompactStateAgg,
  state {TEXT | BIGINT}
) RETURNS INTERVAL
```

| Name  | Type            | Default | Required | Description                                                                                                                               |
| ----- | --------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| agg   | CompactStateAgg | -       | ✔        | A state aggregate created with [`compact_state_agg`](/docs/reference/toolkit/state-tracking/compact_state_agg/compact_state_agg/index.md) |
| state | TEXT            | BIGINT  | -        | ✔                                                                                                                                         |

## Returns

| Column       | Type     | Description                                                                                      |
| ------------ | -------- | ------------------------------------------------------------------------------------------------ |
| duration\_in | INTERVAL | The time spent in the given state. Displayed in `days`, `hh:mm:ss`, or a combination of the two. |
