0

期間を選択するドロップダウンボックスがあります。1 週間を選択すると、Mysql データベースから過去 1 週間のデータを取得する必要があります。私は次のクエリの助けを借りてこれを行います。

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

2 週間を選択すると、2 つの結果セットを取得する必要があります。1 つは現在の週のデータを含み、上記のクエリで実行できます。また、現在の週より 1 週間前のデータを含む結果セットも必要です。

同様に、3 週間を選択すると、過去 3 週間のデータを含む 3 つの結果セットが毎週個別の結果セットとして取得されます。

クエリを変更せずにこの状況を実現したいのですが、日付範囲をクエリに渡して結果を取得したいだけです。したがって、現在のシステム時間から各週の終了日を取得する必要があります。

編集 *例で状況を説明しました: *

現在の日が火曜日で、日付が 2012 年 4 月 12 日である場合、3 週間を選択すると、これらの日の間にレコードが設定されます。1 週間の結果セットとして 2012 年 11 月 27 日から 2012 年 4 月 12 日、2 番目の週の結果セットとして 2012 年 11 月 20 日から 2012 年 11 月 27 日、3 週目の結果セットとして 2012 年 11 月 13 日から 2012 年 11 月 20 日. これはあなたのクエリから可能ですか??

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をグループ化するのに役立つことを願っています

于 2012-12-09T06:14:38.413 に答える