{"slug":"record-date-vs-ex-dividend-date","qid":"big_div_exception","label":"Dividends that went ex AFTER the record date: special vs. recurring, trailing 12 months","post_title":"Ex-Dividend Date vs. Record Date: Same Day?","post_url":"/blog/record-date-vs-ex-dividend-date#q-big_div_exception","columns":["dividend_type","dividends","ex_after_record","pct_ex_after_record","median_days_record_to_ex","pct_of_those_ex_after_pay"],"rows":[{"dividend_type":"special","dividends":457,"ex_after_record":23,"pct_ex_after_record":5.03,"median_days_record_to_ex":16,"pct_of_those_ex_after_pay":96},{"dividend_type":"recurring","dividends":44969,"ex_after_record":12,"pct_ex_after_record":0.03,"median_days_record_to_ex":6,"pct_of_those_ex_after_pay":33}],"shape":"table","sql":"SELECT distribution_type AS dividend_type,\n       count() AS dividends,\n       countIf(ex_dividend_date > record_date) AS ex_after_record,\n       round(100.0 * countIf(ex_dividend_date > record_date) / count(), 2) AS pct_ex_after_record,\n       round(quantileDeterministicIf(0.5)(dateDiff('day', record_date, ex_dividend_date), cityHash64(id), ex_dividend_date > record_date), 0) AS median_days_record_to_ex,\n       round(100.0 * countIf(ex_dividend_date > record_date AND ex_dividend_date > pay_date) / greatest(countIf(ex_dividend_date > record_date), 1), 0) AS pct_of_those_ex_after_pay\nFROM global_markets.stocks_dividends\nWHERE currency = 'USD'\n  AND distribution_type IN ('special', 'recurring')\n  AND ex_dividend_date >= today() - INTERVAL 12 MONTH\n  AND ex_dividend_date <= today()\n  AND record_date IS NOT NULL\n  AND pay_date IS NOT NULL\nGROUP BY distribution_type\nHAVING countIf(ex_dividend_date > record_date) > 0\nORDER BY indexOf(['special', 'recurring'], distribution_type)","computed_at":"2026-08-22T04:18:30.645700+00:00","elapsed":0.042681747}