1

現在、私のクエリは現在の日付から過去 7 日間のデータを取得しています。過去 1 週間のデータを取得したいのですが、今日が 2013-06-20 の場合、データは先週 (2013-06-10 から 2013-06 まで) 取得する必要があります。 -16).正確な答えを求めて多くのフォーラムを検索しましたが、まだ見つかりません。

これが私のクエリです

 SELECT CONVERT(varchar(25),PostDate,107) AS duration, count(*) AS posts
    FROM MDBDetails WHERE 
      DateAdd(dd, 0, DateDiff(dd, 0, PostDate)) <= DateAdd(dd, 0, DateDiff(dd, 0, GETDATE())) AND 
      DateAdd(dd, 0, DateDiff(dd, 0, PostDate)) >= DateAdd(dd, 0, DateDiff(dd, 0, GETDATE())) - 7

          GROUP BY  CONVERT(varchar(25),PostDate,107)
          ORDER BY duration
4

3 に答える 3

1

次のコードは、前の週の月曜日を返す必要があります。

SELECT DATEADD(WEEK, -1, DATEADD(WEEK, DATEDIFF(WEEK, 0, SYSDATETIME()), 0));
于 2013-06-19T19:15:15.710 に答える
1

datepart 関数で週番号を取得できます。1 を引くと、前の週になります。

SELECT DATEPART(WEEK,GETDATE()) -1

次に、たとえば週番号と年を使用してデータをフィルタリングできます。

于 2013-06-19T19:15:37.623 に答える