我有一个下拉框,我选择持续时间。如果我选择1周,我必须从Mysql数据库中检索过去一周的数据。我在以下查询的帮助下执行此操作。
SELECT * FROM rpt_machine_log WHERE (timestamp between date_sub(now(),INTERVAL $interval) and now())
当我选择两周时,我必须得到两个结果集,一个包含当前周的数据,可以用上面的查询完成,我也想要结果集,其中包含当前一周前的数据周。
类似地,如果我选择3周,我应该得到3个结果集,其中包含过去3周的数据,每周作为单独的结果集。
我想在不更改查询的情况下实现这种情况,我只想将日期范围传递给查询以获取结果。因此,我需要从当前系统时间中获取每周的结束日期。
EDITED * 用例子解释了情况: *
如果当天是星期二,日期是4-12-2012,那么当我选择3周时,我希望在这些天之间设置记录。 2012年11月27日至2012年4月12日作为一周结果集,20-11-2012至27-11-2012作为第二周结果集和13-11-2012至20-11-2012作为第三周结果集。这可能来自你的查询??
答案 0 :(得分:0)
我已经执行了一个查询,您可以在其中找到表格中给定日期的week_start_date和week_end_date。 我为同一个
创建了一个示例表create table tbl(
orderid int(10),
dt date);
insert into tbl values(1,'2012-12-04');
insert into tbl values(2,'2012-11-27');
insert into tbl values(3,'2012-11-20');
SELECT orderid,dt,
DATE_ADD(dt, INTERVAL(1-DAYOFWEEK(dt)) DAY) week_start,
DATE_ADD(dt, INTERVAL(7-DAYOFWEEK(dt)) DAY) week_end
FROM tbl
WHERE (dt between date_sub(now(),INTERVAL 3 WEEK) and now())
group by week_start,week_end
order by week_start,week_end;
希望这有助于将日期分组为o / p(s)