{"slug":"us-stock-market-hours-moscow-time","qid":"msk_clock_windows","label":"msk_clock_windows","post_title":"us-stock-market-hours-moscow-time","post_url":"/blog/lang/ru/us-stock-market-hours-moscow-time#q-msk_clock_windows","columns":["us_clock","msk_open","msk_close","msk_open_decimal","from_ru","to_ru"],"rows":[{"us_clock":"EST: зимний клок США","msk_open":"17:30","msk_close":"00:00","msk_open_decimal":17.5,"from_ru":"3 ноября 2025","to_ru":"6 марта 2026"},{"us_clock":"EDT: летний клок США","msk_open":"16:30","msk_close":"23:00","msk_open_decimal":16.5,"from_ru":"9 марта 2026","to_ru":"30 сентября 2026"}],"shape":"table","sql":"WITH\n    sessions AS\n    (\n        SELECT\n            toDate(toTimeZone(window_start, 'America/New_York')) AS sess,\n            min(window_start)                                    AS first_bar\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker = 'SPY'\n          AND window_start >= toDateTime('2025-11-03 00:00:00')\n          AND window_start <  toDateTime('2026-10-01 00:00:00')\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\n        GROUP BY sess\n    ),\n    clocks AS\n    (\n        SELECT\n            sess,\n            first_bar,\n            toHour(toTimeZone(first_bar, 'Europe/Moscow'))\n              - toHour(toTimeZone(first_bar, 'America/New_York')) AS msk_minus_et\n        FROM sessions\n    )\nSELECT\n    if(msk_minus_et = 8, 'EST: зимний клок США', 'EDT: летний клок США')                      AS us_clock,\n    formatDateTime(toTimeZone(min(first_bar), 'Europe/Moscow'), '%H:%i')                      AS msk_open,\n    formatDateTime(toTimeZone(min(first_bar) + toIntervalMinute(390), 'Europe/Moscow'), '%H:%i') AS msk_close,\n    round(toHour(toTimeZone(min(first_bar), 'Europe/Moscow'))\n          + toMinute(toTimeZone(min(first_bar), 'Europe/Moscow')) / 60, 2)                    AS msk_open_decimal,\n    concat(toString(toDayOfMonth(min(sess))), ' ',\n           arrayElement(['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'], toMonth(min(sess))), ' ',\n           toString(toYear(min(sess))))                                                       AS from_ru,\n    concat(toString(toDayOfMonth(max(sess))), ' ',\n           arrayElement(['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'], toMonth(max(sess))), ' ',\n           toString(toYear(max(sess))))                                                       AS to_ru\nFROM clocks\nGROUP BY msk_minus_et\nORDER BY min(sess)","computed_at":"2026-10-05T14:52:37.554612+00:00","elapsed":0.005113598}