興味深いソート方程式です。私は毎月の第2週曜日の金曜日を検索する最もクリーンな方法を探しています。週が月曜日に始まると仮定します。SQL:月曜日の金曜日の取得
例
- 2017年11月はだろう。
- 12月2017は、15thとなります。
- 1月2018は、12thとなります。
これらのことは通常楽しいですが、今は気分が変わっていません。助言がありますか?個人的に
興味深いソート方程式です。私は毎月の第2週曜日の金曜日を検索する最もクリーンな方法を探しています。週が月曜日に始まると仮定します。SQL:月曜日の金曜日の取得
例
これらのことは通常楽しいですが、今は気分が変わっていません。助言がありますか?個人的に
これは、最初に理解することは容易ではないかもしれませんが、この特定のケースのためにルールは単純です:週は月曜日に開始した場合
weekday = 'Friday' (or whichever way to determine if this day is Friday)
and day_of_month between 12 and 18
これは動作します。作業週が月曜日に始まる場合
は、私はこのようなもののために日付テーブルを好きですが、あなたは数学のそれをすることもできます:5
を微調整する必要があるかもしれない
CASE WHEN datepart(weekday, '2017-12-01')<=5 THEN 7 ELSE 14 END + (7-datepart(weekday, '2017-12-01'))
ことが、私はそれが日曜日基づいてdatepart(weekday
ので、右だと思うし、あなた(適切に相殺するためには6である必要があるかもしれない)。
いずれにせよ、これは野球場に入るはずです。
は、その後、月の第二の完全な作業週の金曜日は@fdomが月の初日である
SELECT DATEADD(day, (9 - DATEPART(weekday, @fdom)) % 7) + 11, @fdom)
AS SecondWorkweekFriday;
-- 1. start with the first day of the month (@fdom)
-- 2. advance to the nearest Monday with modular arithmetic
-- n.b.: by default DATEPART considers Monday to be ordinal
-- week day #2, thus "7 - DATEPART() + 2" becomes
-- "9 - DATEPART"
-- 3. add eleven days to get to the second Friday thereafter
です。 first day of the monthをSQLで見つける方法はたくさんあります。
この[日付表](https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/)をご覧ください。アーロン・バートランド。あなたは好きなようにそれを照会することができますが、あなたは非常に良い出発点を持っています。 –
ヒント:適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベースの質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 'tsql'は選択肢を絞り込みますが、データベースは指定しないことに注意してください。 – HABO