9

T-SQLで月の最後の金曜日の日付を取得するにはどうすればよいですか?

201211 など、年と月をパラメーターとして渡します。パラメーターとして「201211」を渡すと、11 月 '12 の月の最後の金曜日の日付であるため、答えとして「20121130」が返されます。

4

4 に答える 4

11

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-05WITH1900-01-06などを置き換えることで、これを使用して最後の土曜日を取得することもできます。

于 2012-12-21T11:17:42.607 に答える
3

これは、カレンダー テーブルを使用するとより簡単になります。必要に応じて適切な列を作成したら、次のように記述できます。

select 
    max([Date])
from 
    dbo.Calendar
where 
    YearAndMonth = 201211 and 
    DayOfWeek = 'Friday'

カレンダー テーブルは、一般に、関数を使用するよりも日付を決定するための優れたソリューションです。これは、コードがはるかに読みやすく、国や会社によっても大きく異なる などWeekNumberの独自の定義を使用できるためです。FinancialQuarter

于 2012-12-21T15:09:23.687 に答える