SQLite date functions work well with ISO date strings. Keeping dates fixed makes examples deterministic.

Program

Play the script to filter dated events and compute a follow-up day.

start_day
date_windows.sql
Replay: real traced execution (multi-file project)
CREATE TABLE events (name TEXT, day TEXT);
INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
WITH params(start_day) AS (VALUES ('2026-01-02')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
CREATE TABLE events (name TEXT, day TEXT);
INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
WITH params(start_day) AS (VALUES ('2026-01-01')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
CREATE TABLE events (name TEXT, day TEXT);
INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
WITH params(start_day) AS (VALUES ('2026-01-03')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
  1. tables ← 1 row

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
    values this step1 rowtables
  2. events ← 3 rows

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-02')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step3 rowsevents
  3. result ← 2 rows

    2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-02')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step2 rowsresult
  1. tables ← 1 row

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
    values this step1 rowtables
  2. events ← 3 rows

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-01')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step3 rowsevents
  3. result ← 3 rows

    2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-01')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step3 rowsresult
  1. tables ← 1 row

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');
    values this step1 rowtables
  2. events ← 3 rows

    1CREATE TABLE events (name TEXT, day TEXT);2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-03')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step3 rowsevents
  3. result ← 1 row

    2INSERT INTO events VALUES ('plan', '2026-01-01'), ('build', '2026-01-02'), ('ship', '2026-01-04');3WITH params(start_day) AS (VALUES ('2026-01-03')) SELECT name, day, DATE(day, '+7 day') AS follow_up FROM events WHERE day >= (SELECT start_day FROM params) ORDER BY day;
    values this step1 rowresult
ISO date `YYYY-MM-DD` text sorts in date order for fixed dates.
DATE `DATE(day, '+7 day')` calculates a deterministic follow-up date.
date filter The selected `start_day` controls which events remain.