# `roundTime`

## Description

Returns a timestamp rounded down to the nearest interval.

Note

Functionally equivalent to dividing a timestamp by an interval: `timestamp / interval`.

## Syntax

Like many functions in DataPrime, `roundTime` supports [two notations](https://coralogix.com/docs/dataprime/language-reference/functions-reference/index.md), **function** and **method** notation. These interchangeable forms allow flexibility in how you structure expressions.

```dataprime
roundTime(sourceTimestamp: timestamp, timeInterval: interval): timestamp
```

```dataprime
(sourceTimestamp: timestamp).roundTime(timeInterval: interval): timestamp
```

## Arguments

| Name            | Type      | Required | Description                                      |
| --------------- | --------- | -------- | ------------------------------------------------ |
| sourceTimestamp | timestamp | **true** | The timestamp to round                           |
| timeInterval    | interval  | **true** | The interval that defines the rounding precision |

## Example

**Use case: Group timestamps into one-hour buckets**

Round event timestamps to one-hour buckets and count `CREATE` actions per bucket.

### Example data

```json
{ "ts": 1728763337, "action": "CREATE" },
{ "ts": 1728751234, "action": "CREATE" },
{ "ts": 1728734567, "action": "UPDATE" },
{ "ts": 1728763312, "action": "DELETE" }
```

### Example query

```dataprime
filter action == "CREATE"
| groupby roundTime(ts, 1h) as time_bucket agg count() as create_count
```

```dataprime
filter action == "CREATE"
| groupby ts.roundTime(1h) as time_bucket agg count() as create_count
```

### Example output

```json
{ "time_bucket": 1728763200000000000, "create_count": 2 },
{ "time_bucket": 1728748800000000000, "create_count": 1 },
{ "time_bucket": 1728734400000000000, "create_count": 1 }
```
