SQL Server:指定した日付が休日(祝祭日、土日)かどうかをチェックするユーザー定義関数

SQL Serverで指定した日付が休日(祝祭日、土日)かどうかをチェックするユーザー定義関数を作ったので覚書しておく。

ユーザー定義関数の処理概要

基本的には、以下の記事でAccessのVBAで作成したユーザー定義関数のSQL Server版です。

AccessのVBAで指定した日付が休日(祝祭日、土日)かどうかを判定するためのユーザー定義関数を作成したので覚書しておく。 OSの設...

ユーザー定義関数のプログラムだけでは祝祭日のチェックはできないので、別途祝祭日を管理するテーブル(holidayテーブル)を用意して事前に祝祭日の日付を入力しておく必要があります。

祝祭日、土日以外で会社がお休みになる日(創立記念日など)も入力しておいてください。

祝祭日がテーブルに入力されていることを前提として、ユーザー定義関数のプログラム処理としては以下のとおりです。

  1. 休日かどうかチェックしたい日付を引数として受け取ります。
  2. 受け取った引数の日付がholidayテーブルに存在するかをチェックします。
  3. 存在しない場合は、曜日を調べて土日かどうかをチェックします。
  4. 祝祭日もしくは、土日にあたる場合はTrueを返し、そうでない場合はFalseを返します。

祝祭日を管理するテーブルの構造

祝祭日を管理するテーブル構造は以下のとおり。

テーブル名:holiday

フィールド名データ型入力する値
holidaydatetime祝祭日の日付
holiday_namevarchar(20)祝祭日名

注意点

holiday_nameフィールドを用意するかどうかは任意です。

祝祭日名については直接使われることはありません。

ユーザー定義関数を作成するスクリプト

以下、ユーザー定義関数を作成するスクリプト

上記スクリプトをSQL Serverで実行してあげればユーザー定義関数が作成されます。