0

我有一个下拉框,我在其中选择持续时间。如果我选择 1 周,我必须从 Mysql 数据库中检索过去一周的数据。我在以下查询的帮助下做到了这一点。

 SELECT * FROM rpt_machine_log WHERE (timestamp between date_sub(now(),INTERVAL $interval) and now())

当我选择两周时,我必须得到两个结果集,一个包含当周的数据,可以通过上面的查询来完成,我还想要包含当周前一周数据的结果集。

同样,如果我选择 3 周,我应该得到 3 个包含过去 3 周数据的结果集,每周作为单独的结果集。

我想在不更改查询的情况下实现这种情况,我只想将日期范围传递给查询以获得结果。因此,我需要从当前系统时间获取每周的结束日期。

已编辑 *举例说明情况: *

如果当天是星期二,日期是 2012 年 4 月 12 日,当我选择 3 周时,我想在这几天之间设置记录。27-11-2012 到 4-12-2012 作为一周结果集,20-11-2012 到 27-11-2012 作为第二周结果集和 13-11-2012 到 20-11-2012 作为第三周结果集. 这可能从您的查询?

4

1 回答 1

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) 进行分组

于 2012-12-09T06:14:38.413 回答