dst_switches
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-08, from us-daylight-saving-switch-tehran-time.
| switch_iso | switch_label | ny_clock | tehran_open_clock | tehran_close_clock | tehran_open_hour |
|---|---|---|---|---|---|
| 2025-03-09 | 9 مارس 2025 | EDT | 17:00 | 23:30 | 17 |
| 2025-11-02 | 2 نوامبر 2025 | EST | 18:00 | 00:30 | 18 |
| 2026-03-08 | 8 مارس 2026 | EDT | 17:00 | 23:30 | 17 |
| 2026-11-01 | 1 نوامبر 2026 | EST | 18:00 | 00:30 | 18 |
| 2027-03-14 | 14 مارس 2027 | EDT | 17:00 | 23:30 | 17 |
| 2027-11-07 | 7 نوامبر 2027 | EST | 18:00 | 00:30 | 18 |
| 2028-03-12 | 12 مارس 2028 | EDT | 17:00 | 23:30 | 17 |
| 2028-11-05 | 5 نوامبر 2028 | EST | 18:00 | 00:30 | 18 |
- Rows × columns
- 8 × 6
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
switch_iso |
date | 2025-03-09 to 2028-11-05 | |
switch_label |
text | 8 distinct values | |
ny_clock |
text | 2 distinct values (EDT, EST) | |
tehran_open_clock |
text | 2 distinct values (17:00, 18:00) | |
tehran_close_clock |
text | 2 distinct values (00:30, 23:30) | |
tehran_open_hour |
number | 17 to 18 | US dollars |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
SELECT
toString(switch_date) AS switch_iso,
concat(toString(toDayOfMonth(switch_date)), ' ',
['ژانویه', 'فوریه', 'مارس', 'آپریل', 'مه', 'ژوئن',
'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'][toMonth(switch_date)], ' ',
toString(toYear(switch_date))) AS switch_label,
if(toHour(toTimeZone(ny_open, 'UTC')) = 13, 'EDT', 'EST') AS ny_clock,
formatDateTime(toTimeZone(ny_open, 'Asia/Tehran'), '%H:%i') AS tehran_open_clock,
formatDateTime(toTimeZone(ny_close, 'Asia/Tehran'), '%H:%i') AS tehran_close_clock,
round(toHour(toTimeZone(ny_open, 'Asia/Tehran'))
+ toMinute(toTimeZone(ny_open, 'Asia/Tehran')) / 60.0, 2) AS tehran_open_hour
FROM
(
SELECT
switch_date,
toDateTime(concat(toString(switch_date), ' 09:30:00'), 'America/New_York') AS ny_open,
toDateTime(concat(toString(switch_date), ' 16:00:00'), 'America/New_York') AS ny_close
FROM
(
SELECT arrayJoin([spring_switch, fall_switch]) AS switch_date
FROM
(
SELECT
mar1 + ((7 - toDayOfWeek(mar1)) % 7) + 7 AS spring_switch,
nov1 + ((7 - toDayOfWeek(nov1)) % 7) AS fall_switch
FROM
(
SELECT
toDate(concat(toString(y), '-03-01')) AS mar1,
toDate(concat(toString(y), '-11-01')) AS nov1
FROM ( SELECT arrayJoin([2025, 2026, 2027, 2028]) AS y )
)
)
)
)
ORDER BY switch_date
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.