人気ブログランキング | 話題のタグを見る
<< 初雪 ひとりの夕食 >>

銀行営業日カレンダー

金融関係のシステムを構築する場合に用意しなければいけないのが銀行営業日カレンダー。
例えば債券の受渡日から利払日までの経過日数などを計算する関数を用意するためには、あらかじめ銀行営業日のDBを準備しておくのが便利である。
例えば利払い日が休業日の場合、その日付を前後の営業日にずらして計算する必要があるからだ。他にもいろいろ銀行営業日を考慮する計算がたくさんあるだろう。

日本における銀行営業日とは、土日祝祭日と1月2日,1月3日,12月31日である。
カレンダーDBを用意して、銀行営業日か否かのフラグを持たせるのがよいだろう。

create table Calender
(
BaseDate datetime not null,
BusinessDateSign int not null
)

さて、その銀行営業日のフラグを設定するロジックがちょっと面倒である。
日曜日に祝祭日が重なった場合に月曜日が振り替え休日になるし、最近は成人の日のように「第○月曜日が祝日」(ハッピーマンデー)というようになっているからだ。
また、新しく祝祭日が増えたりすることもある。

■成人の日
1999年までは1月15日
2000年以降は1月の第2月曜日

■海の日
1996年から2002年まで7月20日
2003年以降は7月の第3月曜日

■敬老の日
2002年まで9月15日
2003年以降は9月の第3月曜日

■体育の日
1999年までは10月10日
2000年以降は10月の第2月曜日


さらに「春分の日」と「秋分の日」のことを考慮しなくてはならない。
「春分の日」は3月になるが、日にちは以下の計算式で求まる。(1980年から2099年まで)
Int( 20.8431 + 0.242194 * ( [yyyy] - 1980 ) - Int(([yyyy] - 1980)/4 ) )

「秋分の日」は9月になるが、日にちは以下の計算式で求まる。(1980年から2099年まで)
Int( 23.2488 + 0.242194 * ( [yyyy] - 1980 ) - Int(([yyyy] - 1980)/4 ) )

また、法改正で祝日の規定が変わった場合にはこのカレンダーDBを再構築する必要がある。

万年カレンダーを作るのも簡単ではない。
by crab2003 | 2004-12-28 11:32 | 仕事・会社のこと | Comments(4)
Commented by issyo_ni at 2004-12-28 17:05
祝日ばりばり変わりましたよね。昔の祝日の感覚とぜんぜん違って、子供の学校の休みの日程が連休に次ぐ連休!…という私の職場は銀行です(時給雇われの下働きの身分ですが…笑)
Commented by blackberry_tea at 2004-12-28 23:13
DDL文、久々に目にしたのでとても懐かしいのですが、
ロジックを考えるのは異様に苦手で、わたしはIT関連の仕事を
やめてしまいました・笑 
能力があれば続けたものを。。。

今年はありがとうございました!来年もお目にかかる機会が
ありましたらよろしくお願いします。
Commented by crab2003 at 2004-12-29 08:48
★issyo_niさん、
最近、祝日が覚えられなくなってしまいました。
まぁ、3連休が増えたので嬉しいですけどね!
Commented by crab2003 at 2004-12-29 08:51
★blackberry_teaさん、
あぁ、以前はこういうことされてたんですね。
今は新しい仕事でがんばってるみたいで、転職してよかったじゃないですか。もうこういうDDL文みないのは見たくない?(笑)

こちらこそありがとうございました。
また、お酒飲んで今度はちゃんとお話してみたいです。
<< 初雪 ひとりの夕食 >>