尝试了这一点:
select * from t1;
+------------+
| ADate |
+------------+
| 2012-01-04 |
| 2012-01-10 |
| 2012-01-19 |
| 2012-01-22 |
| 2012-01-01 |
| 2012-01-01 |
+------------+
select
strftime('%W', aDate) WeekNumber,
max(date(aDate, 'weekday 0', '-7 day')) WeekStart,
max(date(aDate, 'weekday 0', '-1 day')) WeekEnd,
count(*) as GroupedValues
from t1
group by WeekNumber;
+------------+------------+------------+------------+
| WeekNumber | WeekStart | WeekEnd | WeekNumber |
+------------+------------+------------+------------+
| 00 | 2011-12-25 | 2011-12-31 | 2 |
| 01 | 2012-01-01 | 2012-01-07 | 1 |
| 02 | 2012-01-08 | 2012-01-14 | 1 |
| 03 | 2012-01-15 | 2012-01-21 | 2 |
+------------+------------+------------+------------+
说实话...我不知道为什么2012-01 -01是第0周,2012-01-02是第1周。听起来很奇怪,尤其是如果这周在周日开始! :■
请注意,我不是试图让周一天。其实我正在尝试获取时间戳的星期编号。 如果您运行第一个查询,您将得到00作为第一个星期的查询,01查询第二个查询,而不是00.因为两个日期都是在一月份的第一个星期,并且应该得到相同的结果。 SELECT strftime('%W','2012-01-01'); SELECT strftime('%W','2012-01-02'); 这是在sqlite的错误? – 2012-02-17 03:24:57
在页面底部的http://www.sqlite.org/lang_datefunc.html中,列出了sqlite的所有错误和限制;从它的外观计算将在Windows Vista中不正确!你是否运行Vista或Windows 7? – 2012-02-17 03:46:27