{"slug":"us-stock-market-hours-east-africa-time","qid":"kanuni_za_saa","label":"kanuni_za_saa","post_title":"us-stock-market-hours-east-africa-time","post_url":"/blog/lang/sw/us-stock-market-hours-east-africa-time#q-kanuni_za_saa","columns":["ratiba","eat_open","eat_close","session_count","kikao_cha_kwanza","kikao_cha_mwisho","open_eat_hr","close_eat_hr"],"rows":[{"ratiba":"16:30 hadi 23:00","eat_open":"16:30","eat_close":"23:00","session_count":168,"kikao_cha_kwanza":"22 Septemba 2025","kikao_cha_mwisho":"23 Septemba 2026","open_eat_hr":16.5,"close_eat_hr":23},{"ratiba":"17:30 hadi 00:00","eat_open":"17:30","eat_close":"00:00","session_count":83,"kikao_cha_kwanza":"3 Novemba 2025","kikao_cha_mwisho":"6 Machi 2026","open_eat_hr":17.5,"close_eat_hr":24},{"ratiba":"17:30 hadi 21:00","eat_open":"17:30","eat_close":"21:00","session_count":2,"kikao_cha_kwanza":"28 Novemba 2025","kikao_cha_mwisho":"24 Desemba 2025","open_eat_hr":17.5,"close_eat_hr":21}],"shape":"table","sql":"WITH\n    dakika AS\n    (\n        SELECT\n            window_start,\n            toTimeZone(window_start, 'America/New_York')         AS ny,\n            toDate(toTimeZone(window_start, 'America/New_York')) AS siku\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker = 'SPY'\n          AND window_start >= toDateTime(today() - 371)\n          AND window_start <  toDateTime(today() - 2)\n          AND volume > 0\n          AND (toHour(ny) * 60 + toMinute(ny)) >= 9 * 60 + 30\n          AND (toHour(ny) * 60 + toMinute(ny)) <  16 * 60\n    ),\n    mipaka AS\n    (\n        SELECT\n            siku,\n            min(window_start) AS kufungua,\n            max(window_start) AS kufunga,\n            count()           AS dakika_zilizopimwa\n        FROM dakika\n        GROUP BY siku\n        HAVING dakika_zilizopimwa >= 120\n    ),\n    eat AS\n    (\n        SELECT\n            siku,\n            toHour(toTimeZone(kufungua, 'Africa/Nairobi'))\n              - toHour(toTimeZone(kufungua, 'America/New_York'))     AS saa_tofauti,\n            toHour(toTimeZone(kufunga, 'America/New_York')) < 15     AS ni_kufunga_mapema,\n            toUInt32(round((toHour(toTimeZone(kufungua, 'Africa/Nairobi')) * 60\n                          + toMinute(toTimeZone(kufungua, 'Africa/Nairobi'))) / 30) * 30) % 1440 AS dk_kufungua,\n            toUInt32(round((toHour(toTimeZone(kufunga, 'Africa/Nairobi')) * 60\n                          + toMinute(toTimeZone(kufunga, 'Africa/Nairobi'))) / 30) * 30) % 1440  AS dk_kufunga\n        FROM mipaka\n    ),\n    vipindi AS\n    (\n        SELECT\n            count()                               AS session_count,\n            arrayElement(topK(1)(dk_kufungua), 1) AS dk_kufungua_kawaida,\n            arrayElement(topK(1)(dk_kufunga), 1)  AS dk_kufunga_kawaida,\n            min(siku)                             AS siku_ya_kwanza,\n            max(siku)                             AS siku_ya_mwisho\n        FROM eat\n        GROUP BY saa_tofauti, ni_kufunga_mapema\n        HAVING session_count >= 2\n    )\nSELECT\n    concat(eat_open, ' hadi ', eat_close) AS ratiba,\n    concat(leftPad(toString(intDiv(dk_kufungua_kawaida, 60)), 2, '0'), ':',\n           leftPad(toString(dk_kufungua_kawaida % 60), 2, '0'))  AS eat_open,\n    concat(leftPad(toString(intDiv(dk_kufunga_kawaida, 60)), 2, '0'), ':',\n           leftPad(toString(dk_kufunga_kawaida % 60), 2, '0'))   AS eat_close,\n    session_count,\n    concat(toString(toDayOfMonth(siku_ya_kwanza)), ' ',\n           ['Januari','Februari','Machi','Aprili','Mei','Juni','Julai','Agosti','Septemba','Oktoba','Novemba','Desemba'][toMonth(siku_ya_kwanza)],\n           ' ', toString(toYear(siku_ya_kwanza)))                AS kikao_cha_kwanza,\n    concat(toString(toDayOfMonth(siku_ya_mwisho)), ' ',\n           ['Januari','Februari','Machi','Aprili','Mei','Juni','Julai','Agosti','Septemba','Oktoba','Novemba','Desemba'][toMonth(siku_ya_mwisho)],\n           ' ', toString(toYear(siku_ya_mwisho)))                AS kikao_cha_mwisho,\n    round(dk_kufungua_kawaida / 60, 2)                           AS open_eat_hr,\n    round((dk_kufunga_kawaida + if(dk_kufunga_kawaida < dk_kufungua_kawaida, 1440, 0)) / 60, 2) AS close_eat_hr\nFROM vipindi\nORDER BY session_count DESC, open_eat_hr, close_eat_hr","computed_at":"2026-09-26T15:57:01.523630+00:00","elapsed":0.542226655}