WITH RECURSIVE date_range(d) AS (SELECT MIN(order_date) FROM orders UNION ALL SELECT DATE(d, '+1 day') FROM date_range WHERE d < (SELECT MAX(order_date) FROM orders)) SELECT d AS missing_date FROM date_range WHERE d NOT IN (SELECT DISTINCT order_date FROM orders);
Write your query and click "Run Query" (Ctrl + Enter) to see results and testcase validation.