Dates, time zones and fiscal calendars
How Halo groups dates, resolves relative ranges like last 30 days, and applies your fiscal year, week start and time zones.
A date in a chart depends on four settings: the time grain it's grouped by, the range it's filtered to, your organization's calendar, and the time zone it's read in. Halo Engine and the date picker work these out with the same rules, so what a preview says is what a query does.
Time grains
A grain is how finely a date is grouped. Pick one next to a date field in the chart editor or the explorer; Exact leaves the values as they are. Changing the grain regroups the same data.
| Grain | Reads as | Notes |
|---|---|---|
| Minute, Hour | Jan 4, 9:30 AM | Timestamps only |
| Day | Jan 4, 2026 | |
| Week | Week of Jan 4, 2026 | Starts on your organization's week start |
| ISO week | Week of Jan 5, 2026 | Always starts on Monday |
| Month | Jan 2026 | |
| Quarter | Q1 2026 | Calendar quarters |
| Year | 2026 | |
| Fiscal quarter | FY2027 Q1 | Follows your fiscal year |
| Fiscal year | FY2027 | Named by the calendar year it ends in |
Relative date ranges
Relative ranges move with the calendar, so a report always shows the latest period. They resolve against today in the report's time zone.
Pick a preset to see the dates it means today.
| Group | Presets |
|---|---|
| Days | Today, Yesterday, Last 7, 14, 30 and 90 days |
| Weeks | This week, Last week |
| To date | Month to date, Quarter to date, Year to date |
| Previous | Last month, Last quarter, Last year, Rolling 12 months |
| Fiscal | Fiscal quarter to date, Fiscal year to date, Last fiscal quarter, Last fiscal year |
| Custom | Last N days, weeks or months |
The rules behind them:
Last N counts complete periods and leaves out the current one. Last 7 days ends yesterday, and last 3 months ends on the last day of the previous month.
To date runs from the period's first day through today.
Last month, quarter and year are the whole previous period.
Rolling 12 months is the 12 full months before this one.
Comparing periods
Scorecards and time series can compare with an earlier period when they have a date range filter. Previous period is the same length just before the range. Same period last year, or Same period last year on a scorecard, shifts the range back a year. See Trend lines, forecasts and reference lines.
Your organization's calendar
Owners and Admins set these once, in Settings, General, under Calendar. They apply to every report.
Fiscal year
Fiscal year starts in sets the month your fiscal year begins. Fiscal quarters count from it, and fiscal years are named by the calendar year they end in. With a July start:
Fiscal Q1 is July through September.
July 2026 through June 2027 is FY2027.
Once the start is after January, the date picker adds a Fiscal section. With a January start those presets would repeat the calendar ones, so they don't appear.
The picker with a fiscal year starting in July. Open it to see the Fiscal section.
Calendar grains and presets stay calendar: Quarter and Quarter to date ignore the fiscal year. Formulas work the same way: QUARTER() is the calendar quarter, and DATE_TRUNC([Order date], 'fiscal_quarter') follows your fiscal year.
Week start
Weeks start on is Sunday or Monday. It decides the Week grain, This week and Last week, last N weeks, and DATE_TRUNC(…, 'week').
ISO weeks always start on Monday, whatever you choose. In formulas, WEEK() is the ISO week number, and WEEKDAY() runs from 1 for Monday to 7 for Sunday.
Time zones
Time zones come in layers, each one more specific.
| Layer | Set in | What it does |
|---|---|---|
| Organization | Settings, General, Time zone | The zone every query uses unless something overrides it |
| Report | Time zone under Dates in the report's settings | A report's own zone overrides the organization's |
| Reader | My time zone on a public link, where the report allows it | The reader's browser zone, for them alone |
| Column | The field's Recorded in time zone | The zone a timestamp without a zone was recorded in |
Every time zone field finds a zone by its city or region, so typing new york finds America/New York, and shows each zone's offset from UTC today, such as GMT-5.
Dates group and relative ranges resolve in the report's zone, then the organization's. That's the zone "today" means, and the zone TODAY(), NOW() and HOUR() use in formulas.
Readers in their own zone
Turn on Readers can use their time zone under Dates in the report's settings, then publish. Someone who opens the report's public link from another zone sees My time zone at the top. With it on, days group and ranges like last 30 days resolve in their browser's zone, the button names their city, and the link they copy keeps it. These answers are worked out live rather than read from the report's snapshot, so they can take a moment longer.
Readers in the report's own zone don't see the button, and neither does an edition, which keeps the dates it was published with. Embeds use the report's zone.
How a timestamp is read
A timestamp is an instant, so Halo converts it to the query's zone before grouping. An order placed at 11 p.m. in New York on the last day of a month is already the next month in London, and a chart in each zone shows it where it belongs.
Timestamps with a zone convert directly.
Timestamps without a zone need to say where they were recorded. Set it on the field. Halo starts these columns as UTC when it builds a dataset, so check them if your source records local time.
Plain dates have no time to convert. They stay on the day they say.
If daily totals look a day off near midnight, or don't match the source, check the column's Recorded in time zone first. See Time zones per column.