我想从上周和15周前检索数据。
注意:仅在15周后的同一工作日,而不是所有数据介于两者之间。例如,我想在每周四的15周前获得数据。
这是我的MySQL表的简化,具有所需的结果。
Station | Type | Date | Value
5 2 2012-08-02 3
5 2 2012-07-26 5
5 2 2012-07-19 1
我今天的方式是通过PHP:
$dates = "(";
for($j=1; $j<=15; $j++) { // 15 weeks back, same weekday
$dates .= "'" . date("Y-m-d", strtotime("-{$j} week")) . "', ";
}
然后我使用“SELECT * FROM blabla
WHERE date
IN $ dates”将其附加到MySQL查询,但这不是一个好的解决方案。那么我如何使用纯MYSQL选择15周后的日期呢?
答案 0 :(得分:1)
select col1, col2 from blabla where date>=DATE_SUB(now(),INTERVAL 15 week)
编辑我假设您只想要与日期相同的一周中的数据 - 试试这个:
select
a.col1,
a.col2
from
blabla a
join blabla b
on weekday(a.date)=weekday(b.date)
where
a.date>=date_sub(now(), interval 15 week)
and b.date>=date_sub(now(), interval 15 week)
答案 1 :(得分:1)
尝试:
select col1, col2
from blabla
where date BETWEEN DATE_SUB(now(),INTERVAL 1 week)
AND DATE_SUB(now(),INTERVAL 15 week)
AND DAYOFWEEK(`date`) = 5
这将为您提供上周和14周后的数据。
这个(DATEPART(日期,@ dtDate)= 5)将只返回星期四。
答案 2 :(得分:0)
答案 3 :(得分:0)
SELECT *
FROM foo
WHERE `date` BETWEEN DATE_SUB(NOW(),INTERVAL 1 week) AND DATE_SUB(NOW(),INTERVAL 15 week)
AND DAYOFWEEK(`date`) = DAYOFWEEK(NOW());
更多信息here。