2013-03-04 2 views
0

Я разрабатываю приложение для Android. Одна из моих таблиц приложений имеет «foo_date» как имя столбца. и тип данных - TEXT. У меня есть следующие данные в моей таблицеКак получить даты недели в базе данных SQLite

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 запрос таким образом, что она включает в себя все данные для текущей недели?

Thansk Chintan

+0

Хранение числа в неделю также в БД очень помогло бы. –

+0

Можете ли вы разместить запрос, который вы используете в данный момент? –

+0

Я попробовал ниже запросы, но это не дает мне результат, который я ищу. – Chintan

ответ

0

Ваша проблема заключается в том, что вы сохранили даты в формате, который не может сравниваться легко; символ 1 предшествует 4, поэтому 2013-3-10 сравнивает менее 2013-3-4.

Как documented, вы должны использовать формат даты ISO yyyy-mm-dd. С постоянными размерами полей, вы можете использовать запрос с сравнения строк, которые работают:

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

или используют date function вычислить неделю:

SELECT * FROM foo WHERE strftime('%W', foo_date) = '09' 
+0

Большое спасибо за помощь! :) Я изменил формат на «yyyy-mm-dd», и теперь он работает. – Chintan

0

Во-первых, хранить даты в качестве стандартного формата строки SQLite времени (т.е. ГГГГ-ММ-ДД). Затем вы можете использовать это:

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

, чтобы выбрать строки с тем же номер недели в Теперь.

Смежные вопросы