2012-11-22 247 views
-2

如何將此SELECT語句轉換爲SQLite語句?如何將SQL語句轉換爲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

通過使用SQLite語法......這時候,你可能指的是sqlite的手冊。 – bonCodigo

+1

你可以從所有反引號開始 – Bohemian

+0

爲什麼你認爲它不會在SQLite中工作? –

回答

0

你想取一個現有的MySQL文件並將它翻譯成它的SQL Lite等價物。

有兩個部分,以這一過程:

1.Translate的DDL從一個SQL數據庫到另一個(DDL ==「數據定義語言」)從一個架構

2.Migrate到另一個數據。

每個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

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