ホームページ >データベース >mysql チュートリアル >SQL Server で 2 つの日付の間の稼働日を計算するにはどうすればよいですか?
SQL Server の 2 つの日付間の営業日を計算します
指定された 2 つの日付の間の営業日数の計算は、スケジュール設定、時間管理、その他のさまざまなビジネス アプリケーションにとって貴重なツールです。 SQL Server では、T-SQL を使用して月曜日から金曜日までの営業日を直接計算できます。
解決策:
2 つの日付 (@StartDate と @EndDate) の間の営業日数を決定するには、次の式を使用できます:
<code class="language-sql">(DATEDIFF(dd, @StartDate, @EndDate) + 1) - (DATEDIFF(wk, @StartDate, @EndDate) * 2) - (CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) - (CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)</code>
式の内訳:
DATEDIFF(dd, @StartDate, @EndDate)
週末を含む 2 つの日付の間の合計日数を計算します。 DATEDIFF(wk, @StartDate, @EndDate)
2 つの日付間の完全な週数を計算します。 (DATEDIFF(wk, @StartDate, @EndDate) * 2)
は、指定された日付範囲内の週末の日数を表します。 (CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
開始日が日曜日であるかどうかを確認し、日曜日である場合は 1 日を減算します。 (CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
終了日が土曜日かどうかを確認し、土曜日の場合は 1 日減算します。 例:
2008 年 10 月 1 日から 2008 年 10 月 31 日までの営業日数を計算するには、次のクエリを使用できます。
<code class="language-sql">DECLARE @StartDate DATETIME DECLARE @EndDate DATETIME SET @StartDate = '2008/10/01' SET @EndDate = '2008/10/31' SELECT (DATEDIFF(dd, @StartDate, @EndDate) + 1) -(DATEDIFF(wk, @StartDate, @EndDate) * 2) -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)</code>
このクエリは結果 22 を返します。これは、週末を除いた 2008 年 10 月 1 日から 31 日までの営業日数を表します。
以上がSQL Server で 2 つの日付の間の稼働日を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。