我需要将此查询从 MySQL 格式转换为 SQLite。我正在尝试自己,但我发现了一些困难。
在 SQLite 中,curdate() 和 interval 函数不存在。
select a.Date
from (
select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
where a.Date between '2010-01-20' and '2010-01-24'
最佳答案
这个查询实际上所做的只是生成大量连续的日期(最多前一千天)。
在 SQLite 3.8.3 或更高版本中,使用递归 common table expression 可以更轻松地完成此操作:
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;
关于mysql - 将查询从 MySql 转换为 Sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23462493/