2017-09-07 7 views
1

MySQLを使用して、月または現日の就業日数を計算する必要があります。
月 - 金:1
土:0.5
日と休日:MySql-加重祝日を使用したMonthまたはtodateの稼働日数

営業日のような秤量する0私は日曜日を含め休日オフ(含むテーブル、t_holidayを、持っている

、土曜日は除く):

_______________________________ 
|holiday_date | holiday_desc | 
|-------------|---------------| 
|2017-12-31 | Sunday Off | 
|2017-12-25 | Christmas Day | 
|2017-12-24 | Sunday Off | 
------------------------------- (and so on) 

これはmysqlを使用してすべて可能ですか?私はおそらく土曜日を必要に応じてt_holidayに追加することができます。

+0

特定の日付の曜日は、適切な機能を使用して決定できます。したがって、日曜日を「休日」として指定する必要は特にないと思います。あなたにrテーブル。副選択を使用して、現在の収益日付の祝日表にレコードがあるかどうかを確認してください。もしそうなら、0を適用します。そうでない場合は、日曜日か土曜日 - もしそうなら0.5重量をチェックします。それ以外は、1の重み。 – CBroe

+0

@Rheine収益テーブルはどのように見えますか?あなたは私たちに構造を与えることができますか? – Krishnakumar

+0

@CBroeだから、毎月のテーブルを毎月作成する必要があるので、SQL関数を使って日曜日/土曜日であるかどうかチェックすることができます。あなたはそれと一緒にいかがですか? – Rheine

答えて

1

はい、可能です。
1.はい持っている: - 休日 - 土曜日(祝日されていないこと)* 0.5

これを行うには、私は考えることができる最も簡単な方法があるが、営業日の
数=月の日数は、何がしたいです休日テーブルの休日のテーブルt_holiday
2.入れ土曜日t_holiday
3.別の列holiday_weight、通常の休日や日曜日= 1のためholiday_weight、および休日を入れて_weight土曜日= 0.5。何をあなたの場合は

SELECT DAY(LAST_DAY('2015-2-1')) - 
SELECT (SUM(holiday_weight)) FROM t_holiday WHERE YEAR(holiday_date) = my_year AND MONTH(holiday_date) = my_month) 

:だろうと2月のために言うことは、SQLの数(ホリデー*重量)

-

あなたの答えは、このように作業日数=月の日数は次のようになり希望日時:

SELECT DAY(CURDATE()) - 
SELECT (SUM(holiday_weight)) FROM t_holiday WHERE YEAR(holiday_date) = YEAR(CURDATE()) AND MONTH(holiday_date) = MONTH(CURDATE())) 
+0

ありがとうございます。しかし実際に必要な日数以上の問題は、実際に月間であり、1か月の合計作業日数ではありません。たとえば、今日(9月7日)の場合は4,5、明日の場合は5,5など... – Rheine

+0

有効な点は、これを表す答えを編集します – mrateb

+0

Ifこれは、あなたが探していた答えです、それを正しいとマークしてください:) – mrateb

関連する問題