質問

SSRSレポートを作成しています。

報告書では、週は常に月曜日から日曜日に行われます。
そして、過去2週間の開始日と終了日を知りたいです。

例えば、

現在の日付の場合= 2011年1月1日
- 現在の週= 2010年12月27日から2011年1月2日
- 前週= 2010年12月20日から2010年12月26日

私は次のことを試しましたが、現在の日があったときに失敗するようです

DECLARE @DT DATETIME
DECLARE @Offset INT
DECLARE @CM DATETIME
DECLARE @PM DATETIME
DECLARE @PS DATETIME

--SET @DT = GETDATE()
SET @DT = '11/14/2010' -- Monday
SET @Offset = (DATEPART(WEEKDAY, @DT) - 2) * -1
SET @CM = DATEADD(DAY, @Offset, @DT)
SET @PM = DATEADD(DAY, -7, @CM)
SET @PS = DATEADD(DAY, -1, @CM)

SELECT @Offset AS Offset, @DT AS Date, @CM AS Monday, @PM AS [Previous Monday], @PS AS [Previous Sunday], DATEPART(WK, @PM) AS Week

どうすれば修正できますか?

役に立ちましたか?

解決

これが最もエレガントなソリューションであるかどうかはわかりませんが、このような@offsetでケースステートメントを実行できます。

SET @offset = CASE WHEN DATEPART(weekday, @today) >= 2
                  THEN -(DATEPART(weekday, @today) - 2)
                  ELSE -(DATEPART(weekday, @today) + 5)
               END

私はそれがすべてのケースで機能すると思います。

他のヒント

Aを追加します [Calendar] 事前に計算する必要があるすべての日付を使用して、DBへのテーブル。その後、日名、数字、休日などのフィールドを含めて、必要な値を調べることができます。

遊ぶよりもはるかに簡単です DATEADD

カレンダー表に関する便利な記事: 補助カレンダーテーブルの使用を検討する必要があるのはなぜですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top