2016-07-14 10 views
0

これで毎週実行するSQLクエリーがあるので、毎月実行する必要があります。クエリでは、レポート開始日の有効開始日と終了日があります。今私がしたいのは、開始日と終了日の式です。一意の開始日と終了日の有効期間シナリオ

開始日私は今日の日付から前の月になり、前の月の最後の月曜日であることを望みます。

最終有効期限製品の詳細表から最大修正日になりたい。

私は何を探しているのですか?これをコードで書く方法がわかりません。ありがとう!!!

答えて

1

これはトリックを行う必要があり、この

declare @dt datetime 
set @dt=GETDATE() 
select DATEADD(WEEK,DATEDIFF(WEEK,0,DATEADD(DAY,DATEPART(DAY,dateadd(m,-1,GETDATE())),dateadd(m,-1,GETDATE()))), 0) StartDate 
+0

フムを...あなたが欲しい – Tyron78

+0

... 1週間前月曜日の前に...私のために間違った結果を生成しました前月の開始日第1月曜日、私はそうですか? –

+0

最後に説明があります.... – Tyron78

1

を試してみてください。

DECLARE @Today date = convert(date, getdate()); 
DECLARE @Monday tinyint = 1; 
DECLARE @LastDayOfMonth date = DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0)); 
DECLARE @LastWeekDayOfMonth int = datepart(weekday,DATEADD(d,-1,DATEADD(month, DATEDIFF(month, 0, @Today), 0))); 

SELECT DATEADD(d, @[email protected]+1, @LastDayOfMonth) AS LastMonday 
+0

これはDATEFIRSTの設定に依存することにご注意ください。 – dean

+0

だから私は@monday変数を定義したのですが、それを考えればあなたは正しいです...修正/追加の計算が必要になるかもしれません...しかし、月曜日が週の最初の曜日である場合には、これはうまくいくはずです。 ;-) – Tyron78

+0

影響を受けるDATEPART関数であるため、unfは役に立ちません。https://msdn.microsoft.com/en-us/library/ms174420.aspx – dean

関連する問題