2011-11-15 12 views
3

私はAndroidでSQLiteクエリを記述しようとしていますが、datetime列の日付コンポーネント(ISO 8601文字列として格納されています)が指定された日と等しいテーブルからすべての行を選択します。基本的には、時間を無視して特定の日付の行をすべて選択したいと考えています。datetime列が特定の日である行を選択する

これはどのように達成できますか?

答えて

1

使用このクエリ

select * from table_name where day=desired_day; 

ので、このコード:このdocumentationは、私は、SQL正規表現を使用することを考え出した方法を参照するには

database.query("table_name", null, "day like ?",new String[]{"____-__-daynumber%"}, null, null, null, null); 

チェックアウト。この正規表現は、任意の年と任意の月を許可します。あなたが特定の年の特定の月にのみ、特定の日にしたい場合の操作を行います。

database.query("table_name", null, "day like ?",new String[]{"1983-03-22%"}, null, null, null, null); 

この1983年3月22日

+1

この列はdatetime、つまりYYYY-MM-DD HH:MM:SS.SSSなので、1日を使用すると、YYYY-MM-DDは等しくなくなります。結果はありません - それは間違っていますか? –

+0

あなたのコメントを解決するために私の応答を編集しました。 –

1

SQLiteのは、いくつかのdate time functions持って一日を探します。あなたのケースのように見ることができる選択は次のとおりです。

select * from table where date(your_date_time_column) = iso_8601_date_only_value; 
+0

タイムゾーンの処理方法によっては 'date(your_date_time_column、 'localtime')'が必要かもしれません。 –

0
SELECT * FROM test 
     WHERE strftime('%Y-%m-%d', timecol)=strftime('%Y-%m-%d', '2008-04-12') 
0

あなたは> =で常に開始時間と終了時間として0時〇〇分00秒と午前23時59分59秒を使用し、単に<を使用する=とすることができます...

SELECT * FROM the_table WHERE the_datetime_column >= '2011-11-15 00:00:00' AND the_datetime_column <= '2011-11-15 23:59:59' 
関連する問題