mysql - 将查询从 MySql 转换为 Sqlite

标签 mysql sql sqlite

我需要将此查询从 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/

相关文章:

PHP 事务不回滚

MySQL 替换

sql - SQLite,使用分组?用于日期范围的子查询

java - 在Android中连接数据库

android - 搜索 sqlite 记录并转到特定 Activity Android

mysql - 计算 SET 类型的字符串在一行中出现的次数

mysql - 如何修复此选择查询

mysql - 如果字符串匹配,则使用子查询的计数更新 MySQL 表,否则设置为零

python - 除非我停止并重新启动我的程序,否则我无法选择最近的 INSERT 到我的数据库

java - 如何诊断 MySQL JDBC 驱动程序的 ClassNotFound 异常