如何将SQL语句转换为SQLite语句?

时间:2012-11-22 02:58:32

标签: sql sqlite

如何将此SELECT语句转换为SQLite语句?

SELECT count(`listId`) AS countP, 
       DATE_FORMAT( DATE_ADD(DATE_FORMAT(timestamp, '%Y-%m-%d %H:00:00'),
                             INTERVAL IF( MINUTE( timestamp )<30, 0, 1) HOUR), '%H:30') AS hourP
  FROM `polldata` 
 WHERE `gcId`=01
   AND `listId`=02
 GROUP BY hourP
 ORDER BY hourP
 LIMIT 0, 30

2 个答案:

答案 0 :(得分:0)

您希望获取现有的MySQL文件并将其转换为与SQL Lite等效的文件。

此过程分为两部分:

1.将DDL从一个SQL数据库转换为另一个SQL数据库(DDL ==“数据定义语言”)

2.将数据从一个模式迁移到另一个模式。

每个SQL供应商都以ANSI SQL开头,并添加了自己的专有语法。因此,您必须从MySQL定义创建SQL Lite模式(表,列,索引等)。

数据迁移过程称为ETL(“Extract-Transform-Load”)。您可能必须从MySQL中按下一些数据才能将其导入SQL Lite。

最好的方案是将MySQL数据导出到.csv文件,在SQL Lite中创建表,然后导入.csv文件。

请参阅此处

http://www.codeproject.com/Articles/26932/Convert-SQL-Server-DB-to-SQLite-DB

答案 1 :(得分:0)

SQLite没有本机时间戳类型。 假设时间戳存储为yyyy-mm-dd hh:mm:ss个字符串,查询将如下所示:

SELECT count(`listId`) AS countP,
       strftime('%H:30',
                timestamp,
                CASE WHEN substr(timestamp, 15, 2) < '30'
                     THEN '1 hours'
                     ELSE '0 hours'
                END) as hourP
  FROM `polldata` 
 WHERE `gcId`=01
   AND `listId`=02
 GROUP BY hourP
 ORDER BY hourP
 LIMIT 0, 30