sqlbeginner

Generate a Date Series

Create a continuous date range to fill gaps in time-series queries.

sql
-- PostgreSQL: generate_series for dates
SELECT d::date AS date
FROM generate_series(
  '2025-01-01'::date,
  '2025-12-31'::date,
  '1 day'::interval
) AS d;

-- Fill gaps in daily metrics
SELECT
  dates.date,
  COALESCE(m.page_views, 0) AS page_views,
  COALESCE(m.unique_visitors, 0) AS unique_visitors
FROM generate_series(
  '2025-01-01'::date,
  CURRENT_DATE,
  '1 day'
) AS dates(date)
LEFT JOIN daily_metrics m ON m.metric_date = dates.date
ORDER BY dates.date;

Use Cases

  • Filling gaps in time-series data
  • Calendar table generation
  • Reporting

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.