Bの値を入力すると、月のB番目の稼働日を取得する必要があります。たとえば、2013年1月のb = 12の場合、結果はその月の土曜日、日曜日、祝日を除外して計算されるため、「17-01-2013」の日付形式である必要があります。
次のコードを使用してSQLserverで試してみましたが、一部の関数はSqlserverのように使用できないため、MySqlで実行するのは困難です。
Declare
@fromDate Date,
@Daydiff int
Set @fromDate ='01 jan 2013'
Set @Daydiff=datediff(day, @fromdate, dateadd(month, 1, @fromdate))
Select * from
(
Select
dateadd(day,DayNo,@fromDate) as Date,
dateName(weekday,(dateadd(day,DayNo,@fromDate))) As WeekDate,
Datename(month,(dateadd(day,DayNo,@fromDate))) as MonthName,
Row_number() Over (partition by (DatePart(month,(dateadd(day,DayNo,@fromDate))))
order by (dateadd(day,DayNo,@fromDate))) as Business_day
from
(Select top (@Daydiff) row_number() over(order by (select 1))-1 as DayNo
from sys.syscolumns a cross join sys.syscolumns b)Dates
Where
dateName(weekday,(dateadd(day,DayNo,@fromDate))) Not In ('Saturday','Sunday') and
dateadd(day,DayNo,@fromDate) Not In (Select hdate from Holidays)
)A
Where Business_day=1
ノート
Holidaysは、2013年の休日のリストを含む静的な休日テーブルです。
Mysqlに同様のインスタンスが必要です。親切にこれを手伝ってください。