如何在SQLite数据库中获取周日期

时间:2013-03-04 18:03:00

标签: android sqlite

我正在开发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

2 个答案:

答案 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