如何将此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
答案 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