私が取り組んでいるアプリでは、ユーザーは特定の日のログを作成できます。特定の日付範囲に基づいて情報を取り戻そうとしています。
テーブルを作成するコードは次のとおりです (この投稿のために簡略化しています)。
CREATE TABLE IF NOT EXISTS TimeLogged(
...
LogDate DATE NOT NULL
);
テーブルに日付を挿入するために使用されるコードは次のとおりです。
INSERT INTO TimeLogged (LogDate) VALUES (date('2012-01-14'));
日付範囲を取得するために使用しているクエリは次のとおりです。
SELECT LogDate FROM TimeLogged WHERE LogDate BETWEEN date('2012-01-01') AND date('2012-04-16')
Sqlite コマンド ウィンドウから完全に動作します。私はあまりにも新しいので、pix を投稿するにはリンクがあります: Sqlite コマンド ウィンドウ
Flex/Flash Builder 4.6 で結果を取得するために使用するコードは次のとおりです。
var stmt:SQLStatement = new SQLStatement();
stmt.sqlConnection = SQLCom.SQLCon;
stmt.text = "SELECT LogDate FROM TimeLogged WHERE LogDate BETWEEN date('2012-01-01') AND date('2012-04-16')";
try{
stmt.execute();
}
catch(err:SQLError){
trace(err.details);
}
var a:ArrayCollection = new ArrayCollection(stmt.getResult().data);
trace("a.length: " + a.length);
for(var i:int = 0; i < a.length; ++i)
trace("a[" + i + "]: " + a[i].LogDate);
複数のレコードがあるにもかかわらず、結果が返されません。
WHERE/BETWEEN ステートメントを削除すると、コンソール出力に次のように表示されます。 Flex/Flash Builder コンソール出力
私の問題に光を当てることができる人に、事前に感謝します。