{"slug":"us-stock-market-hours-german-time","qid":"mismatch_by_year","label":"mismatch_by_year","post_title":"us-stock-market-hours-german-time","post_url":"/blog/us-stock-market-hours-german-time#q-mismatch_by_year","columns":["year","mismatch_sessions","mismatch_open_german","mismatch_close_german","aligned_open_german","aligned_close_german"],"rows":[{"year":"2021","mismatch_sessions":15,"mismatch_open_german":"14:March","mismatch_close_german":"21:March","aligned_open_german":"15:January","aligned_close_german":"22:January"},{"year":"2022","mismatch_sessions":15,"mismatch_open_german":"14:March","mismatch_close_german":"21:March","aligned_open_german":"15:January","aligned_close_german":"22:January"},{"year":"2023","mismatch_sessions":15,"mismatch_open_german":"14:March","mismatch_close_german":"21:March","aligned_open_german":"15:January","aligned_close_german":"22:January"},{"year":"2024","mismatch_sessions":19,"mismatch_open_german":"14:March","mismatch_close_german":"21:March","aligned_open_german":"15:January","aligned_close_german":"22:January"},{"year":"2025","mismatch_sessions":20,"mismatch_open_german":"14:March","mismatch_close_german":"21:March","aligned_open_german":"15:January","aligned_close_german":"22:January"}],"shape":"table","sql":"SELECT\n    toString(toYear(session_date))     AS year,\n    countIf(gap_hours = 5)             AS mismatch_sessions,\n    anyIf(german_open, gap_hours = 5)  AS mismatch_open_german,\n    anyIf(german_close, gap_hours = 5) AS mismatch_close_german,\n    anyIf(german_open, gap_hours = 6)  AS aligned_open_german,\n    anyIf(german_close, gap_hours = 6) AS aligned_close_german\nFROM\n(\n    SELECT\n        date AS session_date,\n        formatDateTime(toTimeZone(toDateTime(concat(toString(date), ' 09:30:00'), 'America/New_York'), 'Europe/Berlin'), '%H:%M') AS german_open,\n        formatDateTime(toTimeZone(toDateTime(concat(toString(date), ' 16:00:00'), 'America/New_York'), 'Europe/Berlin'), '%H:%M') AS german_close,\n        toHour(toTimeZone(toDateTime(concat(toString(date), ' 09:30:00'), 'America/New_York'), 'Europe/Berlin')) - 9            AS gap_hours\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date >= toStartOfYear(today() - INTERVAL 5 YEAR)\n      AND date <  toStartOfYear(today())\n)\nGROUP BY year\nORDER BY year","computed_at":"2026-09-26T15:27:20.084212+00:00","elapsed":0.028400629}