dividend_calendar
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-09-24, from vz-vs-t-dividend.
| quarter | vz_ex_date | vz_pay_date | t_ex_date | t_pay_date | vz_days_ex_to_pay | t_days_ex_to_pay | ex_date_gap_days |
|---|---|---|---|---|---|---|---|
| 2025-07-01 | Jul 10, 2025 | Aug 1, 2025 | Jul 10, 2025 | Aug 1, 2025 | 22 | 22 | 0 |
| 2025-10-01 | Oct 10, 2025 | Nov 3, 2025 | Oct 10, 2025 | Nov 3, 2025 | 24 | 24 | 0 |
| 2026-01-01 | Jan 12, 2026 | Feb 2, 2026 | Jan 12, 2026 | Feb 2, 2026 | 21 | 21 | 0 |
| 2026-04-01 | Apr 10, 2026 | May 1, 2026 | Apr 10, 2026 | May 1, 2026 | 21 | 21 | 0 |
| 2026-07-01 | Jul 10, 2026 | Aug 3, 2026 | Jul 10, 2026 | Aug 3, 2026 | 24 | 24 | 0 |
- Rows × columns
- 5 × 8
- 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 |
|---|---|---|---|
quarter |
date | 2025-07-01 to 2026-07-01 | |
vz_ex_date |
text | 5 distinct values (Apr 10, 2026, Jan 12, 2026, Jul 10, 2025…) | |
vz_pay_date |
text | 5 distinct values (Aug 1, 2025, Aug 3, 2026, Feb 2, 2026…) | |
t_ex_date |
text | 5 distinct values (Apr 10, 2026, Jan 12, 2026, Jul 10, 2025…) | |
t_pay_date |
text | 5 distinct values (Aug 1, 2025, Aug 3, 2026, Feb 2, 2026…) | |
vz_days_ex_to_pay |
number | 21 to 24 | |
t_days_ex_to_pay |
number | 21 to 24 | |
ex_date_gap_days |
number | every row is 0 |
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.
WITH paid AS
(
SELECT
id,
any(ticker) AS tkr,
any(ex_dividend_date) AS ex_date,
any(pay_date) AS pay_dt
FROM global_markets.stocks_dividends
WHERE ticker IN ('VZ', 'T')
AND cash_amount > 0
AND ex_dividend_date >= today() - 500
GROUP BY id
)
SELECT
toString(toStartOfQuarter(ex_date)) AS quarter,
maxIf(formatDateTime(ex_date, '%b %e, %Y'), tkr = 'VZ') AS vz_ex_date,
maxIf(formatDateTime(pay_dt, '%b %e, %Y'), tkr = 'VZ') AS vz_pay_date,
maxIf(formatDateTime(ex_date, '%b %e, %Y'), tkr = 'T') AS t_ex_date,
maxIf(formatDateTime(pay_dt, '%b %e, %Y'), tkr = 'T') AS t_pay_date,
maxIf(dateDiff('day', ex_date, pay_dt), tkr = 'VZ') AS vz_days_ex_to_pay,
maxIf(dateDiff('day', ex_date, pay_dt), tkr = 'T') AS t_days_ex_to_pay,
abs(dateDiff('day', maxIf(ex_date, tkr = 'VZ'), maxIf(ex_date, tkr = 'T'))) AS ex_date_gap_days
FROM paid
GROUP BY quarter
HAVING countIf(tkr = 'VZ') > 0 AND countIf(tkr = 'T') > 0
ORDER BY quarter
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.