0

私はAndroidアプリケーションを開発しています。私のアプリケーションテーブルの1つに、列名として「foo_date」があります。データ型はTEXTです。テーブルに次のデータがあります

primary key  | foo_date  | foo_value
--------------------------------------
1             2013-3-1    100

2             2013-3-2    2

3             2013-3-4    100

4             2013-3-3    1000

私の要件は、今週のデータを取得することです(つまり、2013-3-4から2013-3-10)。以下のクエリを書くと、行#3を除くすべてのデータを取得しています

select * from foo_tbl where foo_date between '2013-3-4' and '2013-3-10';

sqlite今週のすべてのデータが含まれるようにクエリを作成するにはどうすればよいですか?

タンスクチンタン

4

2 に答える 2

0

問題は、簡単に比較できない形式で日付を保存していることです。文字はの14に来るので、2013-3-10未満を比較し2013-3-4ます。

文書化されているように、ISO日付形式を使用する必要がありますyyyy-mm-dd。フィールドサイズが一定の場合、次のように機能する文字列比較を含むクエリを使用できます。

SELECT * FROM foo WHERE foo_date BETWEEN '2013-03-04' AND '2013-03-10'

または、日付関数を使用して週を計算します。

SELECT * FROM foo WHERE strftime('%W', foo_date) = '09'
于 2013-03-04T18:36:45.603 に答える
0

まず、日付を標準の sqlite 時間文字列形式 (つまり、YYYY-MM-DD) として保存します。次に、これを使用できます。

select * from foo where strftime('%W', foo_date) == strftime('%W', 'now')

現在と同じ週番号の行を選択します。

于 2013-03-04T18:43:15.947 に答える