{"slug":"us-stock-market-hours-london-time","qid":"dst_windows","label":"dst_windows","post_title":"us-stock-market-hours-london-time","post_url":"/blog/us-stock-market-hours-london-time#q-dst_windows","columns":["label","begins","ends","days_at_four_hours","regular_session_london"],"rows":[{"label":"Spring 2026","begins":"Mar 8","ends":"Mar 28","days_at_four_hours":21,"regular_session_london":"13:30 to 20:00"},{"label":"Autumn 2026","begins":"Oct 25","ends":"Oct 31","days_at_four_hours":7,"regular_session_london":"13:30 to 20:00"},{"label":"Spring 2027","begins":"Mar 14","ends":"Mar 27","days_at_four_hours":14,"regular_session_london":"13:30 to 20:00"},{"label":"Autumn 2027","begins":"Oct 31","ends":"Nov 6","days_at_four_hours":7,"regular_session_london":"13:30 to 20:00"}],"shape":"table","sql":"SELECT\n    concat(if(toMonth(min(day)) < 7, 'Spring ', 'Autumn '), toString(toYear(min(day)))) AS label,\n    concat(formatDateTime(min(day), '%b'), ' ', toString(toDayOfMonth(min(day))))       AS begins,\n    concat(formatDateTime(max(day), '%b'), ' ', toString(toDayOfMonth(max(day))))       AS ends,\n    count()                                                                              AS days_at_four_hours,\n    concat(any(open_london), ' to ', any(close_london))                                  AS regular_session_london\nFROM\n(\n    SELECT\n        day,\n        formatDateTime(toTimeZone(toDateTime(concat(toString(day), ' 09:30:00'), 'America/New_York'), 'Europe/London'), '%H:%i') AS open_london,\n        formatDateTime(toTimeZone(toDateTime(concat(toString(day), ' 16:00:00'), 'America/New_York'), 'Europe/London'), '%H:%i') AS close_london\n    FROM\n    (\n        SELECT toDate('2026-01-01') + arrayJoin(range(730)) AS day\n    )\n)\nWHERE open_london = '13:30'\nGROUP BY toYear(day), toMonth(day) < 7\nORDER BY min(day)","computed_at":"2026-09-20T15:09:34.083476+00:00","elapsed":0.04077236}