2011-07-18 15 views
0

2つの日付間の特定の日付を選択しようとしています。 DBに格納されている形式はM/d/yyyyです。私がしようとしているのは、2つの日付を渡すことです。この2つの日付の間の列のすべてのデータを選択したいと思います。私はDBにデータがあることを知っていますが、それはいくつかの日付のために何かを持っていません。いくつかの日付のために、それはデータをもたらしますが、いくつかの日付のためにデータをもたらします。SQLステートメントは2つの日付の間に値を返しません

例:

私は最初の日付として2011年7月10日を選択して、二日2011年7月16日として、それがデータをもたらします。しかし、私が最初の日付として7/9/2011を選択し、2011年7月16日に2番目の日付として、それは何も持たない。誰もがこの質問を支援することができ

Cursor cursor = db.query(CONTACT_DATA, new String[] { "duration" }, 
       "date >= ? AND date <= ?", 
       new String[] { firstDate, secondDate }, null, null, null); 

場合:

は、ここに私のクエリです。ありがとう!

+0

これが役立つかどうかを確認してください:http://stackoverflow.com/questions/3838527/android-java-date-difference-in-days – nickfox

+0

うわー、私は答えを投稿しようとし、コメントとして投稿します。私は3回それをやった。 – nickfox

答えて

0

私はmiliseconds(エポック形式)として日付を保存するので、比較が簡単です。そして、日付を印刷するとき、私はそれを変換します。

0

SQLiteにはネイティブの日付型がありません。あなたの日付を文字列として比較しています。そのため、日付が同じ年と同じで、その日の数字の桁数が同じであれば、クエリは機能しているように見えますが、それは単なる運勢です。

通常、SQLiteユーザーは、文字列として正しく並べ替えるISO-8601形式(YYYY-MM-DD)を使用して日付文字列を書式設定します。

SQLiteにはdate functionsがあります。日付が整形されている場合は、ltrim and rtrimとともにこれらを使用して、クエリで使用できる形式に日付を変換することができます。

+0

したがって、2つの日付の間でクエリに使用する正しい形式は、YYYY-MM-DDですか?ありがとう。 – rogcg

+0

はい、比較している列のデータの形式でも可能です。 –

関連する問題