我有一个带有日期字段的表格,我想要选择上周,周六到周日(不是最近7天)的所有条目。
表值
Date ID Value
8/3/2015 8:03 PM a 10
8/4/2015 8:03 PM b 20
8/5/2015 8:03 PM c 30
8/6/2015 8:03 PM d 40
8/7/2015 8:03 PM e 50
8/9/2015 8:03 PM f 60
8/10/2015 8:03 PM g 70
我只想从最后选择id,b,c,d,e。我如何编写mysql查询?
答案 0 :(得分:1)
这有点棘手。一种方法是尝试像week()
这样的东西,但这在年初有问题。
另一种方法是在周日获取午夜日期并将其用于计算。我认为这个表达式就是这样:
date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 1 day)
然后您可以将其插入where
子句:
select v.*
from values v
where v.date < date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 1 day) and
v.date >= date_sub(curdate(), interval (weekday(curdate()) + 1) % 7) - 8 day);
注意:此公式可以使用date
上的索引。