{"slug":"us-daylight-saving-switch-lagos-time","qid":"premarket_clock_lagos","label":"premarket_clock_lagos","post_title":"us-daylight-saving-switch-lagos-time","post_url":"/blog/lang/pcm/us-daylight-saving-switch-lagos-time#q-premarket_clock_lagos","columns":["month","month_label","premarket_first_lagos","regular_open_lagos","regular_close_lagos","premarket_first_hours","regular_open_hours","regular_close_hours"],"rows":[{"month":"2025-10","month_label":"Oct 2025","premarket_first_lagos":"09:00","regular_open_lagos":"14:30","regular_close_lagos":"21:00","premarket_first_hours":9,"regular_open_hours":14.5,"regular_close_hours":21},{"month":"2025-11","month_label":"Nov 2025","premarket_first_lagos":"10:00","regular_open_lagos":"15:30","regular_close_lagos":"22:00","premarket_first_hours":10,"regular_open_hours":15.5,"regular_close_hours":22},{"month":"2025-12","month_label":"Dec 2025","premarket_first_lagos":"10:00","regular_open_lagos":"15:30","regular_close_lagos":"22:00","premarket_first_hours":10,"regular_open_hours":15.5,"regular_close_hours":22},{"month":"2026-01","month_label":"Jan 2026","premarket_first_lagos":"10:00","regular_open_lagos":"15:30","regular_close_lagos":"22:00","premarket_first_hours":10,"regular_open_hours":15.5,"regular_close_hours":22},{"month":"2026-02","month_label":"Feb 2026","premarket_first_lagos":"10:00","regular_open_lagos":"15:30","regular_close_lagos":"22:00","premarket_first_hours":10,"regular_open_hours":15.5,"regular_close_hours":22},{"month":"2026-03","month_label":"Mar 2026","premarket_first_lagos":"09:00","regular_open_lagos":"14:30","regular_close_lagos":"21:00","premarket_first_hours":9,"regular_open_hours":14.5,"regular_close_hours":21},{"month":"2026-04","month_label":"Apr 2026","premarket_first_lagos":"09:00","regular_open_lagos":"14:30","regular_close_lagos":"21:00","premarket_first_hours":9,"regular_open_hours":14.5,"regular_close_hours":21}],"shape":"series","sql":"SELECT\n    formatDateTime(day, '%Y-%m')     AS month,\n    argMax(month_label, day)         AS month_label,\n    argMax(premarket_label, day)     AS premarket_first_lagos,\n    argMax(open_label, day)          AS regular_open_lagos,\n    argMax(close_label, day)         AS regular_close_lagos,\n    argMax(premarket_hours, day)     AS premarket_first_hours,\n    argMax(open_hours, day)          AS regular_open_hours,\n    argMax(close_hours, day)         AS regular_close_hours\nFROM\n(\n    SELECT\n        day,\n        formatDateTime(day, '%b %Y')                                    AS month_label,\n        formatDateTime(first_bar, '%H:%i')                              AS premarket_label,\n        formatDateTime(regular_open, '%H:%i')                           AS open_label,\n        formatDateTime(regular_close, '%H:%i')                          AS close_label,\n        round(toHour(first_bar) + toMinute(first_bar) / 60, 2)          AS premarket_hours,\n        round(toHour(regular_open) + toMinute(regular_open) / 60, 2)    AS open_hours,\n        round(toHour(regular_close) + toMinute(regular_close) / 60, 2)  AS close_hours\n    FROM\n    (\n        SELECT\n            toDate(toTimeZone(window_start, 'America/New_York'))  AS day,\n            toTimeZone(min(window_start), 'Africa/Lagos')         AS first_bar,\n            toTimeZone(minIf(window_start, et_minute >= 570 AND et_minute < 960), 'Africa/Lagos') AS regular_open,\n            toTimeZone(maxIf(window_start, et_minute >= 570 AND et_minute < 960) + toIntervalMinute(1), 'Africa/Lagos') AS regular_close\n        FROM\n        (\n            SELECT\n                window_start,\n                toHour(toTimeZone(window_start, 'America/New_York')) * 60\n                  + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute\n            FROM global_markets.delayed_stocks_minute_aggs\n            WHERE ticker = 'SPY'\n              AND window_start >= toDateTime('2025-10-01 04:00:00')\n              AND window_start <  toDateTime('2026-05-01 04:00:00')\n        )\n        GROUP BY day\n        HAVING count() >= 500\n           AND countIf(et_minute >= 570 AND et_minute < 960) >= 380\n    )\n)\nGROUP BY month\nORDER BY month","computed_at":"2026-10-09T15:27:06.903858+00:00","elapsed":0.005285053}