如何从Mysql中的当前系统时间获取一周的日期?

时间:2012-12-09 05:44:16

标签: php mysql sql mysqli

我有一个下拉框,我选择持续时间。如果我选择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作为第三周结果集。这可能来自你的查询??

1 个答案:

答案 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)