2012-12-09 90 views
0

我有一个下拉框,我选择持续时间。如果我选择1周,我必须从Mysql数据库中检索过去一周的数据。我在下面的查询的帮助下做到这一点。如何从Mysql中获取当前系统时间之前一周的日期?

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

当我选择了两个星期,我必须让两个结果集,一个包含本周的数据,可以用上面的查询来完成,我也希望结果集,它包含一个数据本周前一周。

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

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

EDITED * 说明了情况与实例: *

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

回答

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)

+0

我不想一周的确切的开始日期和结束日期。我想要的是,假设,如果当天是星期二和日期是'4-12-2012',当我选择'3周'时,我想要在这几天之间设置记录。 “27-11-2012至2012年4月12日”为一周结果集,“20-11-2012至27-11-2012”为第二周结果集,以及“13-11-2012至20-11-2012” '作为第三周结果集。这是可能从您的查询? – Allen

相关问题