To, co faktycznie robi to zapytanie, to po prostu generowanie wielu kolejnych dat (do tysiąca poprzednich dni).
W SQLite 3.8.3 lub nowszym można to zrobić łatwiej za pomocą rekurencyjnego wspólnego wyrażenia tabelowego :
WITH RECURSIVE dates(d)
AS (VALUES('2010-01-20')
UNION ALL
SELECT date(d, '+1 day')
FROM dates
WHERE d < '2010-01-24')
SELECT d AS date FROM dates;