The UTC range for 2028 starts at 1830297600 and ends at the exclusive boundary 1861920000. The year has 366 days.
Use the year as a half-open range
WHERE event_time >= 1830297600
AND event_time < 1861920000
The exclusive upper boundary is safer than “December 31 at 23:59:59.” It works whether the database stores whole seconds, milliseconds, or fractions of a second.
Month starts in UTC
| Month start | Unix seconds | ISO 8601 UTC |
|---|---|---|
| January 1 | 1830297600 | 2028-01-01T00:00:00Z |
| February 1 | 1832976000 | 2028-02-01T00:00:00Z |
| March 1 | 1835481600 | 2028-03-01T00:00:00Z |
| April 1 | 1838160000 | 2028-04-01T00:00:00Z |
| May 1 | 1840752000 | 2028-05-01T00:00:00Z |
| June 1 | 1843430400 | 2028-06-01T00:00:00Z |
| July 1 | 1846022400 | 2028-07-01T00:00:00Z |
| August 1 | 1848700800 | 2028-08-01T00:00:00Z |
| September 1 | 1851379200 | 2028-09-01T00:00:00Z |
| October 1 | 1853971200 | 2028-10-01T00:00:00Z |
| November 1 | 1856649600 | 2028-11-01T00:00:00Z |
| December 1 | 1859241600 | 2028-12-01T00:00:00Z |
Quarter boundaries
- Q1: 1830297600 (2028-01-01T00:00:00Z)
- Q2: 1838160000 (2028-04-01T00:00:00Z)
- Q3: 1846022400 (2028-07-01T00:00:00Z)
- Q4: 1853971200 (2028-10-01T00:00:00Z)
- Next year: 1861920000 (2029-01-01T00:00:00Z)
These are UTC values. A local business year begins at a different instant unless the business timezone is UTC; calculate those boundaries in the named location before storing the result.