0

先週と 15 週間前のデータを取得したいと考えています。

注:その間のすべてのデータではなく、15 週間前の同じ平日のみ。たとえば、15 週間前の毎週木曜日のデータが必要です。

これは、MySQL テーブルを簡略化したもので、目的の結果が得られます。

Station | Type |     Date    |   Value
5          2     2012-08-02     3
5          2     2012-07-26     5
5          2     2012-07-19     1

今日私が行う方法は、PHP を使用することです。

$dates = "(";
for($j=1; $j<=15; $j++) { // 15 weeks back, same weekday
$dates .= "'" . date("Y-m-d", strtotime("-{$j} week")) . "', ";
 }

次に、「SELECT * FROM blablaWHERE dateIN $dates」を使用してこれを MySQL クエリに追加しますが、これは良い解決策ではありません。では、純粋な MYSQL を使用して 15 週間前の日付を選択するにはどうすればよいでしょうか?

4

4 に答える 4

1

試す:

select col1, col2 
from blabla 
where date BETWEEN DATE_SUB(now(),INTERVAL 1 week) 
AND DATE_SUB(now(),INTERVAL 15 week) 
AND DAYOFWEEK(`date`) = 5

これにより、先週と 14 週間前のデータが得られます。

この (DATEPART(date,@dtDate) = 5) は木曜日のみを返します。

于 2012-08-09T08:37:36.933 に答える
1
select col1, col2 from blabla where date>=DATE_SUB(now(),INTERVAL 15 week)

編集日付と同じ曜日のデータのみが必要だと思います-これを試してください:

select
    a.col1,
    a.col2
from
    blabla a
        join blabla b
            on weekday(a.date)=weekday(b.date)
where
    a.date>=date_sub(now(), interval 15 week)
    and b.date>=date_sub(now(), interval 15 week)
于 2012-08-09T08:30:29.433 に答える
0
SELECT * 
FROM foo 
WHERE `date` BETWEEN DATE_SUB(NOW(),INTERVAL 1 week) AND DATE_SUB(NOW(),INTERVAL 15 week)
AND DAYOFWEEK(`date`) = DAYOFWEEK(NOW());

詳細はこちら

于 2012-08-09T08:58:13.333 に答える
0

mysql で日付フィールドを使用します。http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2012-08-09T08:31:01.740 に答える