Skip to main content
Since 0.0.10-beta The time_bucket function is similar to the standard date_bin function. Unlike date_bin, it allows for arbitrary time intervals of months or longer. The return value is the bucket’s start time. Buckets are aligned to start at midnight in UTC+0. The time bucket size (bucket_width) can be set as INTERVAL or INTEGER. For INTERVAL-type bucket_width, you can change the time zone with the optional timezone parameter. In this case, the buckets are realigned to start at midnight in the time zone you specify. Note that during shifts to and from daylight savings, the amount of data aggregated into the corresponding buckets can be irregular. For example, if the bucket_width is 2 hours, the number of bucketed hours is either three hours or one hour.

Samples

Simple five-minute averaging:
To report the middle of the bucket, instead of the left edge:
For rounding, move the alignment so that the middle of the bucket is at the five-minute mark, and report the middle of the bucket:
In this example, add the explicit cast to ensure that chooses the correct function. To shift the alignment of the buckets, you can use the origin parameter passed as a timestamp, timestamptz, or date type. This example shifts the start of the week to a Sunday, instead of the default of Monday:
The value of the origin parameter in this example is 2017-12-31, a Sunday within the period being analyzed. However, the origin provided to the function can be before, during, or after the data being analyzed. All buckets are calculated relative to this origin. So, in this example, any Sunday could have been used. Note that because time < TIMESTAMPTZ '2018-01-03' is used in this example, the last bucket would have only 4 days of data. This cast to TIMESTAMP converts the time to local time according to the server’s time zone setting.
Bucket temperature values to calculate the average monthly temperature. Set the time zone to ‘Europe/Berlin’ so bucket start and end times are aligned to midnight in Berlin.
To compute buckets on version 7 UUIDs that contain a timestamp in Unix time format, run the following:
When you bucket UUIDs, a regular TIMESTAMP WITH TIME ZONE value is returned.

Arguments

The syntax is:
For integer time inputs:
If you use months as an interval for bucket_width, you cannot combine it with a non-month component. For example, 1 month and 3 months are both valid bucket widths, but 1 month 1 day and 3 months 2 weeks are not.

Returns