我正在开发Android应用程序。我的一个应用程序表有“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
查询以便包含当前周的所有数据?
Thansk Chintan
答案 0 :(得分: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'
答案 1 :(得分:0)
首先,将日期存储为标准的sqlite时间字符串格式(即YYYY-MM-DD)。 然后,你可以使用它:
select * from foo where strftime('%W', foo_date) == strftime('%W', 'now')
选择周数的行 now 。