En réalité, cette requête ne fait que générer de nombreuses dates consécutives (jusqu'à mille jours précédents).
Dans SQLite 3.8.3 ou version ultérieure, cela peut être fait plus facilement avec une expression de table commune :
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;