T-SQLで月の最後の金曜日の日付を取得するにはどうすればよいですか?
201211 など、年と月をパラメーターとして渡します。パラメーターとして「201211」を渡すと、11 月 '12 の月の最後の金曜日の日付であるため、答えとして「20121130」が返されます。
T-SQLで月の最後の金曜日の日付を取得するにはどうすればよいですか?
201211 など、年と月をパラメーターとして渡します。パラメーターとして「201211」を渡すと、11 月 '12 の月の最後の金曜日の日付であるため、答えとして「20121130」が返されます。
1900 年 1 月 5 日は金曜日でした。これは、その基準日を使用して、特定の月の最後の金曜日を計算しますが、月そのものではなく、その月の日付を指定する必要があります。2012-12-01
この中の をあなたの月の日付に置き換えてください
SELECT DATEADD(DY,DATEDIFF(DY,'1900-01-05',DATEADD(MM,DATEDIFF(MM,0,'2012-12-01'),30))/7*7,'1900-01-05')
1900-01-05
WITH1900-01-06
などを置き換えることで、これを使用して最後の土曜日を取得することもできます。
これは、カレンダー テーブルを使用するとより簡単になります。必要に応じて適切な列を作成したら、次のように記述できます。
select
max([Date])
from
dbo.Calendar
where
YearAndMonth = 201211 and
DayOfWeek = 'Friday'
カレンダー テーブルは、一般に、関数を使用するよりも日付を決定するための優れたソリューションです。これは、コードがはるかに読みやすく、国や会社によっても大きく異なる などWeekNumber
の独自の定義を使用できるためです。FinancialQuarter