O que essa consulta realmente faz é apenas gerar muitas datas consecutivas (até mil dias anteriores).
No SQLite 3.8.3 ou posterior, isso pode ser feito mais facilmente com uma expressão de tabela comum :
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;