record_2026
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-20, from msft-dividend-2026.
| ex_date | ex_label | record_date | pay_date | pay_label | declared_on | dividend_per_share |
|---|---|---|---|---|---|---|
| 2026-02-19 | Feb 19 | 2026-02-19 | 2026-03-12 | Mar 12 | 2025-12-02 | 0.91 |
| 2026-05-21 | May 21 | 2026-05-21 | 2026-06-11 | Jun 11 | 2026-03-10 | 0.91 |
| 2026-08-20 | Aug 20 | 2026-08-20 | 2026-09-10 | Sep 10 | 2026-06-10 | 0.91 |
| 2026-11-19 | Nov 19 | 2026-11-19 | 2026-12-10 | Dec 10 | 2026-09-14 | 0.98 |
- Rows × columns
- 4 × 7
- 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 |
|---|---|---|---|
ex_date |
date | 2026-02-19 to 2026-11-19 | |
ex_label |
text | 4 distinct values (Aug 20, Feb 19, May 21…) | |
record_date |
date | 2026-02-19 to 2026-11-19 | |
pay_date |
date | 2026-03-12 to 2026-12-10 | |
pay_label |
text | 4 distinct values (Dec 10, Jun 11, Mar 12…) | |
declared_on |
date | 2025-12-02 to 2026-09-14 | |
dividend_per_share |
number | 0.91 to 0.98 |
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(ex_day) AS ex_date,
concat(formatDateTime(ex_day, '%b'), ' ', toString(toDayOfMonth(ex_day))) AS ex_label,
toString(record_day) AS record_date,
toString(pay_day) AS pay_date,
concat(formatDateTime(pay_day, '%b'), ' ', toString(toDayOfMonth(pay_day))) AS pay_label,
toString(declared_day) AS declared_on,
round(toFloat64(dividend), 2) AS dividend_per_share
FROM
(
SELECT
ex_dividend_date AS ex_day,
toDateOrNull(toString(any(record_date))) AS record_day,
toDateOrNull(toString(any(pay_date))) AS pay_day,
toDateOrNull(toString(any(declaration_date))) AS declared_day,
any(cash_amount) AS dividend
FROM global_markets.stocks_dividends
WHERE ticker = 'MSFT'
AND ex_dividend_date >= toDate('2026-01-01')
AND ex_dividend_date < toDate('2027-01-01')
GROUP BY ex_dividend_date
)
ORDER BY ex_day