{"slug":"us-stock-market-hours-mountain-time","qid":"open_by_zone","label":"open_by_zone","post_title":"us-stock-market-hours-mountain-time","post_url":"/blog/us-stock-market-hours-mountain-time#q-open_by_zone","columns":["month","denver_open","phoenix_open_earliest","phoenix_open_latest","denver_gap_hours","phoenix_gap_hours"],"rows":[{"month":"2025-08","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2025-09","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2025-10","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2025-11","denver_open":"07:30","phoenix_open_earliest":"07:30","phoenix_open_latest":"07:30","denver_gap_hours":2,"phoenix_gap_hours":2},{"month":"2025-12","denver_open":"07:30","phoenix_open_earliest":"07:30","phoenix_open_latest":"07:30","denver_gap_hours":2,"phoenix_gap_hours":2},{"month":"2026-01","denver_open":"07:30","phoenix_open_earliest":"07:30","phoenix_open_latest":"07:30","denver_gap_hours":2,"phoenix_gap_hours":2},{"month":"2026-02","denver_open":"07:30","phoenix_open_earliest":"07:30","phoenix_open_latest":"07:30","denver_gap_hours":2,"phoenix_gap_hours":2},{"month":"2026-03","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"07:30","denver_gap_hours":2,"phoenix_gap_hours":2.77},{"month":"2026-04","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2026-05","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2026-06","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2026-07","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2026-08","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3},{"month":"2026-09","denver_open":"07:30","phoenix_open_earliest":"06:30","phoenix_open_latest":"06:30","denver_gap_hours":2,"phoenix_gap_hours":3}],"shape":"series","sql":"WITH session_opens AS\n(\n    SELECT\n        toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n        min(window_start)                                    AS open_utc\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= today() - 400\n      AND window_start <  today() - 2\n      AND toHour(toTimeZone(window_start, 'America/New_York'))   = 9\n      AND toMinute(toTimeZone(window_start, 'America/New_York')) = 30\n    GROUP BY session_date\n)\nSELECT\n    formatDateTime(toStartOfMonth(session_date), '%Y-%m')                 AS month,\n    min(formatDateTime(toTimeZone(open_utc, 'America/Denver'),  '%H:%i')) AS denver_open,\n    min(formatDateTime(toTimeZone(open_utc, 'America/Phoenix'), '%H:%i')) AS phoenix_open_earliest,\n    max(formatDateTime(toTimeZone(open_utc, 'America/Phoenix'), '%H:%i')) AS phoenix_open_latest,\n    round(avg(toHour(toTimeZone(open_utc, 'America/New_York'))\n              - toHour(toTimeZone(open_utc, 'America/Denver'))), 2)       AS denver_gap_hours,\n    round(avg(toHour(toTimeZone(open_utc, 'America/New_York'))\n              - toHour(toTimeZone(open_utc, 'America/Phoenix'))), 2)      AS phoenix_gap_hours\nFROM session_opens\nGROUP BY month\nORDER BY month","computed_at":"2026-09-24T15:00:48.857714+00:00","elapsed":0.491714475}